소스 검색

modules/usrloc_scscf: first commit of usrloc_scscf modules
- usrloc functionality for S-CSCF servers

Jason Penton 12 년 전
부모
커밋
f08bc36d87

+ 18 - 0
modules/usrloc_scscf/Makefile

@@ -0,0 +1,18 @@
+# $Id$
+#
+# Usrloc module Makefile
+#
+# 
+# WARNING: do not run this directly, it should be run by the master Makefile
+
+include ../../Makefile.defs
+auto_gen=
+NAME=usrloc_scscf.so
+
+DEFS+=-DOPENSER_MOD_INTERFACE
+
+SERLIBPATH=../../lib
+SER_LIBS+=$(SERLIBPATH)/kmi/kmi
+SER_LIBS+=$(SERLIBPATH)/srdb1/srdb1
+SER_LIBS+=$(SERLIBPATH)/kcore/kcore
+include ../../Makefile.modules

+ 9 - 0
modules/usrloc_scscf/NewFile.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<methodResponse>
+<params>
+<param>
+<value><struct><member><name>Domain</name><value><string>location</string></value></member><member><name>Size</name><value><int>512</int></value></member><member><name>IMPUs</name><value><struct><member><name>IMPU</name><value><struct><member><name>IMPU</name><value><string>sip:[email protected]</string></value></member><member><name>IMPI/Subscription</name><value><string>[email protected]</string></value></member><member><name>State</name><value><string>registered</string></value></member><member><name>Barred</name><value><int>1</int></value></member><member><name>ccf1</name><value><string>aaa://priccfaddress:1234</string></value></member><member><name>ecf1</name><value><string></string></value></member><member><name>ccf2</name><value><string></string></value></member><member><name>ecf2</name><value><string></string></value></member></struct></value></member><member><name>IMPU</name><value><struct><member><name>IMPU</name><value><string>sip:[email protected]</string></value></member><member><name>IMPI/Subscription</name><value><string>[email protected]</string></value></member><member><name>State</name><value><string>registered</string></value></member><member><name>Barred</name><value><int>0</int></value></member><member><name>ccf1</name><value><string>aaa://priccfaddress:1234</string></value></member><member><name>ecf1</name><value><string></string></value></member><member><name>ccf2</name><value><string></string></value></member><member><name>ecf2</name><value><string></string></value></member></struct></value></member></struct></value></member><member><name>Stats</name><value><struct><member><name>Records</name><value><int>2</int></value></member><member><name>Max-Slots</name><value><int>1</int></value></member></struct></value></member></struct>
+</value>
+</param>
+</params>
+</methodResponse>

+ 914 - 0
modules/usrloc_scscf/bin_utils.c

@@ -0,0 +1,914 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "bin_utils.h"
+#include "../../locking.h"
+
+#include "../../lib/ims/useful_defs.h"
+/** 
+ * Whether to print debug message while encoding/decoding 
+ */
+#define BIN_DEBUG 0
+
+/** 
+ * Whether to do sanity checks on the available data when decoding
+ * If you are crazy about start-up performance you can disable this.
+ * However, this is very useful for detecting broken snapshots
+ */
+#define BIN_DECODE_CHECKS 1
+
+static inline int str_shm_dup(str *dest,str *src)
+{
+	dest->s = shm_malloc(src->len);
+	if (!dest->s){
+		LM_ERR("str_shm_dup: Error allocating %d bytes\n",src->len);
+		dest->len=0;
+		return 0;
+	}
+	dest->len = src->len;
+	memcpy(dest->s,src->s,src->len);
+	return 1;
+}
+
+
+inline int bin_alloc(bin_data *x, int max_len)
+{                                
+	x->s = (char*)BIN_ALLOC_METHOD(max_len);     
+	if (!x->s){
+		LM_ERR("Error allocating %d bytes.\n",max_len);
+		x->len=0;
+		x->max=0;
+		return 0;
+	}
+    x->len=0;
+    x->max=max_len;
+	return 1;
+}
+
+inline int bin_realloc(bin_data *x, int delta)
+{
+#if BIN_DEBUG
+	LOG(L_INFO,"INFO:"M_NAME":bin_realloc: realloc %p from %d to + %d\n",x->s,x->max,delta);
+#endif	
+	x->s=BIN_REALLOC_METHOD(x->s,x->max + delta);    
+	if (x->s==NULL){                             
+		LM_ERR("No more memory to expand %d with %d  \n",x->max,delta);
+		return 0;
+	}
+	x->max += delta;
+	return 1;
+}
+
+inline int bin_expand(bin_data *x, int delta)
+{
+	if (x->max-x->len>=delta) return 1;
+#if BIN_DEBUG	
+	LOG(L_INFO,"INFO:"M_NAME":bin_realloc: realloc %p from %d to + %d\n",x->s,x->max,delta);
+#endif	
+	x->s=BIN_REALLOC_METHOD(x->s,x->max + delta);    
+	if (x->s==NULL){                             
+		LM_ERR("No more memory to expand %d with %d  \n",x->max,delta);
+		return 0;
+	}
+	x->max += delta;
+	return 1;
+}
+
+inline void bin_free(bin_data *x)
+{
+	BIN_FREE_METHOD(x->s);
+	x->s=0;x->len=0;x->max=0;
+}
+
+/**
+ *	simple print function 
+ */
+inline void bin_print(bin_data *x)
+{
+	int i,j,w=16;
+	char c;
+	fprintf(stderr,"----------------------------------\nBinary form %d (max %d) bytes:\n",x->len,x->max);
+	for(i=0;i<x->len;i+=w){
+		fprintf(stderr,"%04X> ",i);
+		for(j=0;j<w;j++){
+			if (i+j<x->len) fprintf(stderr,"%02X ",(unsigned char)x->s[i+j]);
+			else fprintf(stderr,"   ");
+		}
+		printf("\t");
+		for(j=0;j<w;j++)if (i+j<x->len){
+			if (x->s[i+j]>32) c=x->s[i+j];
+			else c = '.';
+			fprintf(stderr,"%c",c);
+		}else fprintf(stderr," ");
+		fprintf(stderr,"\n");
+	}
+	fprintf(stderr,"\n---------------------------------\n");
+}
+
+/* basic data type reprezentation functions */
+
+
+
+
+/**
+ *	Append a char of 1 byte 
+ */
+inline int bin_encode_char(bin_data *x,char k) 
+{ 
+	if (!bin_expand(x,1)) return 0;
+	x->s[x->len++]= k; 
+#if BIN_DEBUG	
+	LM_ERR("[%d]:[%.02x] new len %04x\n",k,x->s[x->len-1],x->len);
+#endif
+	return 1;   
+}
+/**
+ *	Decode of 1 char
+ */
+inline int bin_decode_char(bin_data *x,char *c)
+{
+#if BIN_DECODE_CHECKS
+	if (x->max+1 > x->len) return 0;
+#endif	
+	*c = x->s[x->max];
+	x->max += 1;
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_char: [%d] new pos %04x\n",*c,x->max);
+#endif
+	return 1;
+}
+
+
+
+
+/**
+ *	Append an unsigned char of 1 byte 
+ */
+inline int bin_encode_uchar(bin_data *x,unsigned char k) 
+{ 
+	if (!bin_expand(x,1)) return 0;
+	x->s[x->len++]= k; 
+#if BIN_DEBUG	
+	LM_ERR("bin_encode_uchar: [%u]:[%.02x] new len %04x\n",k,x->s[x->len-1],x->len);
+#endif
+	return 1;   
+}
+/**
+ *	Decode of 1 unsigned char
+ */
+inline int bin_decode_uchar(bin_data *x,unsigned char *c)
+{
+#if BIN_DECODE_CHECKS
+	if (x->max+1 > x->len) return 0;
+#endif	
+	*c = x->s[x->max];
+	x->max += 1;
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_uchar: [%u] new pos %04x\n",*c,x->max);
+#endif
+	return 1;
+}
+
+
+
+
+
+
+
+/**
+ *	Append the a short  
+ */
+inline int bin_encode_short(bin_data *x,short k) 
+{ 
+	if (!bin_expand(x,2)) return 0;
+	x->s[x->len++]=k & 0x00FF;    
+	x->s[x->len++]=(k & 0xFF00) >> 8;   
+#if BIN_DEBUG	
+	LM_ERR("bin_encode_short: [%d]:[%.02x %.02x] new len %04x\n",k,x->s[x->len-2],x->s[x->len-1],x->len);
+#endif
+	return 1;   
+}
+/**
+ *	Decode of a short
+ */
+inline int bin_decode_short(bin_data *x,short *v)
+{
+#if BIN_DECODE_CHECKS
+	if (x->max+2 > x->len) return 0;
+#endif
+	*v =	(unsigned char)x->s[x->max  ]    |
+	 		(unsigned char)x->s[x->max+1]<<8;
+	x->max += 2;
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_short: [%d] new pos %04x\n",*v,x->max);
+#endif
+	return 1;
+}
+
+
+/**
+ *	Append the an unsigned short  
+ */
+inline int bin_encode_ushort(bin_data *x,unsigned short k) 
+{ 
+	if (!bin_expand(x,2)) return 0;
+	x->s[x->len++]=k & 0x00FF;    
+	x->s[x->len++]=(k & 0xFF00) >> 8;   
+#if BIN_DEBUG	
+	LM_ERR("bin_encode_ushort: [%u]:[%.02x %.02x] new len %04x\n",k,x->s[x->len-2],x->s[x->len-1],x->len);
+#endif
+	return 1;   
+}
+/**
+ *	Decode of a short
+ */
+inline int bin_decode_ushort(bin_data *x,unsigned short *v)
+{
+#if BIN_DECODE_CHECKS
+	if (x->max+2 > x->len) return 0;
+#endif
+	*v =	(unsigned char)x->s[x->max  ]    |
+	 		(unsigned char)x->s[x->max+1]<<8;
+	x->max += 2;
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_ushort: [%u] new pos %04x\n",*v,x->max);
+#endif
+	return 1;
+}
+
+
+/**
+ *	Append an integer
+ */
+inline int bin_encode_int(bin_data *x,int k) 
+{ 
+	int len = sizeof(int),i;
+	if (!bin_expand(x,len)) return 0;
+	for(i=0;i<len;i++){
+		x->s[x->len++]= k & 0xFF;
+		k = k>>8;          
+	}
+#if BIN_DEBUG		    
+	switch(len){
+		case 4:
+			LM_ERR(":bin_encode_int: [%d]:[%.02x %.02x %.02x %.02x] new len %04x\n",k,
+				x->s[x->len-4],x->s[x->len-3],x->s[x->len-2],x->s[x->len-1],x->len);
+			break;
+		case 8:
+			LM_ERR("bin_encode_int: [%d]:[%.02x %.02x %.02x %.02x%.02x %.02x %.02x %.02x] new len %04x\n",k,
+				x->s[x->len-8],x->s[x->len-7],x->s[x->len-6],x->s[x->len-5],
+				x->s[x->len-4],x->s[x->len-3],x->s[x->len-2],x->s[x->len-1],
+				x->len);
+			break;
+	}
+#endif		
+	return 1;   
+}
+/**
+ *	Decode an integer
+ */
+inline int bin_decode_int(bin_data *x,int *v)
+{
+	int len = sizeof(int),i;
+#if BIN_DECODE_CHECKS
+	if (x->max+len > x->len) return 0;
+#endif
+	*v = 0;
+	for(i=0;i<len;i++)
+		*v =  *v | ((unsigned char)x->s[x->max++] <<(8*i));
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_int: [%d] new pos %04x\n",*v,x->max);
+#endif
+	return 1;
+}
+
+
+
+/**
+ *	Append an unsigned integer
+ */
+inline int bin_encode_uint(bin_data *x,unsigned int k) 
+{ 
+	int len = sizeof(unsigned int),i;
+	if (!bin_expand(x,len)) return 0;
+	for(i=0;i<len;i++){
+		x->s[x->len++]= k & 0xFF;
+		k = k>>8;          
+	}
+#if BIN_DEBUG		    
+	switch(len){
+		case 4:
+			LM_ERR("bin_encode_uint: [%u]:[%.02x %.02x %.02x %.02x] new len %04x\n",k,
+				x->s[x->len-4],x->s[x->len-3],x->s[x->len-2],x->s[x->len-1],x->len);
+			break;
+		case 8:
+			LM_ERR("bin_encode_uint: [%u]:[%.02x %.02x %.02x %.02x%.02x %.02x %.02x %.02x] new len %04x\n",k,
+				x->s[x->len-8],x->s[x->len-7],x->s[x->len-6],x->s[x->len-5],
+				x->s[x->len-4],x->s[x->len-3],x->s[x->len-2],x->s[x->len-1],
+				x->len);
+			break;
+	}
+#endif		
+	return 1;   
+}
+/**
+ *	Decode an unsigned integer
+ */
+inline int bin_decode_uint(bin_data *x,unsigned int *v)
+{
+	int len = sizeof(unsigned int),i;
+#if BIN_DECODE_CHECKS
+	if (x->max+len > x->len) return 0;
+#endif
+	*v = 0;
+	for(i=0;i<len;i++)
+		*v =  *v | ((unsigned char)x->s[x->max++] <<(8*i));
+#if BIN_DEBUG	
+	LM_ERR("in_decode_uint: [%u] new pos %04x\n",*v,x->max);
+#endif
+	return 1;
+}
+
+/**
+ *	Append a time_t structure
+ */
+inline int bin_encode_time_t(bin_data *x,time_t k) 
+{ 
+	int len = sizeof(time_t),i;
+	if (!bin_expand(x,len)) return 0;
+	for(i=0;i<len;i++){
+		x->s[x->len++]= k & 0xFF;
+		k = k>>8;          
+	}
+#if BIN_DEBUG		    
+	switch(len){
+		case 4:
+			LM_ERR("bin_encode_time_t: [%u]:[%.02x %.02x %.02x %.02x] new len %04x\n",(unsigned int)k,
+				x->s[x->len-4],x->s[x->len-3],x->s[x->len-2],x->s[x->len-1],x->len);
+			break;
+		case 8:
+			LM_ERR("bin_encode_time_t: [%u]:[%.02x %.02x %.02x %.02x%.02x %.02x %.02x %.02x] new len %04x\n",(unsigned int)k,
+				x->s[x->len-8],x->s[x->len-7],x->s[x->len-6],x->s[x->len-5],
+				x->s[x->len-4],x->s[x->len-3],x->s[x->len-2],x->s[x->len-1],
+				x->len);
+			break;
+	}
+#endif		
+	return 1;   
+}
+/**
+ *	Decode an unsigned integer
+ */
+inline int bin_decode_time_t(bin_data *x,time_t *v)
+{
+	int len = sizeof(time_t),i;
+#if BIN_DECODE_CHECKS
+	if (x->max+len > x->len) return 0;
+#endif
+	*v = 0;
+	for(i=0;i<len;i++)
+		*v =  *v | ((unsigned char)x->s[x->max++] <<(8*i));
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_time_t: [%u] new pos %04x\n",(unsigned int) *v,x->max);
+#endif
+	return 1;
+}
+
+
+/**
+ *	Append a string 
+ */
+inline int bin_encode_str(bin_data *x,str *s) 
+{ 
+	if (!bin_expand(x,2+s->len)) return 0;
+	if (s->len>65535) 
+		LM_ERR("bin_encode_str: Possible loss of characters in encoding (string > 65535bytes) %d bytes \n",s->len);
+	x->s[x->len++]=s->len & 0x000000FF;
+	x->s[x->len++]=(s->len & 0x0000FF00)>>8;
+	memcpy(x->s+x->len,s->s,s->len);
+	x->len+=s->len;
+#if BIN_DEBUG		
+	LM_ERR(":bin_encode_str : [%d]:[%.02x %.02x]:[%.*s] new len %04x\n",s->len,
+		x->s[x->len-s->len-2],x->s[x->len-s->len-1],s->len,s->s,x->len);
+#endif		
+	return 1;   
+}
+/**
+ *	Decode of a str string
+ */
+inline int bin_decode_str(bin_data *x,str *s)
+{
+#if BIN_DECODE_CHECKS
+	if (x->max+2 > x->len) return 0;
+#endif
+	s->len = (unsigned char)x->s[x->max  ]    |
+	 		(unsigned char)x->s[x->max+1]<<8;
+	x->max +=2;
+	if (x->max+s->len>x->len) return 0;
+	s->s = x->s + x->max;
+	x->max += s->len;
+#if BIN_DEBUG	
+	LM_ERR("bin_decode_str : [%d]:[%.*s] new pos %04x\n",s->len,s->len,s->s,x->max);
+#endif
+	return 1;
+}
+
+
+
+
+/**
+ *	Encode and append a Public Indentity
+ * @param x - binary data to append to
+ * @param pi - the public identity to encode
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_encode_public_identity(bin_data *x,ims_public_identity *pi)
+{
+	if (!bin_encode_char(x,pi->barring)) goto error;
+	if (!bin_encode_str(x,&(pi->public_identity))) goto error;	
+	return 1;
+error:
+	LM_ERR("bin_encode_public_identity: Error while encoding.\n");
+	return 0;		
+}
+
+/**
+ *	Decode a binary string from a binary data structure
+ * @param x - binary data to decode from
+ * @param pi - the public identity to decode into
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_decode_public_identity(bin_data *x,ims_public_identity *pi)
+{
+	str s;
+	if (!bin_decode_char(x,	&(pi->barring))) goto error;
+	if (!bin_decode_str(x,&s)||!str_shm_dup(&(pi->public_identity),&s))	goto error;
+	
+	return 1;
+error:
+	LM_ERR("bin_decode_public_identity: Error while decoding (at %d (%04x)).\n",x->max,x->max);
+	if (pi) {
+		if (pi->public_identity.s) shm_free(pi->public_identity.s);
+	}
+	return 0;
+}
+
+/**
+ *	Encode and append a SPT
+ * @param x - binary data to append to
+ * @param spt - the service point trigger to encode
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_encode_spt(bin_data *x, ims_spt *spt)
+{
+	unsigned char c = spt->condition_negated<<7 | spt->registration_type<<4 | spt->type;
+	// cond negated, reg type, spt type
+	if (!bin_encode_uchar(x,c)) goto error;
+
+	//group
+	if (!bin_encode_int(x,spt->group)) goto error;
+
+	//spt
+	switch(spt->type){
+		case 1:
+			if (!bin_encode_str(x,&(spt->request_uri))) goto error; 
+			break;
+		case 2:
+			if (!bin_encode_str(x,&(spt->method))) goto error; 
+			break;
+		case 3:
+			if (!bin_encode_short(x,spt->sip_header.type)) goto error;
+			if (!bin_encode_str(x,&(spt->sip_header.header))) goto error; 
+			if (!bin_encode_str(x,&(spt->sip_header.content))) goto error; 
+			break;
+		case 4:
+			if (!bin_encode_char(x,spt->session_case)) goto error;
+			break;
+		case 5:
+			if (!bin_encode_str(x,&(spt->session_desc.line))) goto error; 
+			if (!bin_encode_str(x,&(spt->session_desc.content))) goto error; 
+			break;
+	}
+	return 1;
+error:
+	LM_ERR("bin_encode_spt: Error while encoding.\n");
+	return 0;		
+}
+
+
+/**
+ *	Decode an SPT
+ * @param x - binary data to decode from
+ * @param spt - the service point trigger to decode into
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_decode_spt(bin_data *x, ims_spt *spt)
+{
+	unsigned char k;
+	str s;
+	
+	if (!bin_decode_uchar(x,&k)) goto error;
+	
+	spt->type = k & 0x0F;
+	spt->condition_negated = ((k & 0x80)!=0);
+	spt->registration_type = ((k & 0x70)>>4);
+	
+	if (!bin_decode_int(x,&(spt->group))) goto error;
+
+	switch (spt->type){
+		case 1:
+			if (!bin_decode_str(x,&s)||!str_shm_dup(&(spt->request_uri),&s)) goto error;
+			break;
+		case 2:
+			if (!bin_decode_str(x,&s)||!str_shm_dup(&(spt->method),&s)) goto error;
+			break;
+		case 3:
+			if (!bin_decode_short(x,&(spt->sip_header.type))) goto error;
+			if (!bin_decode_str(x,&s)||!str_shm_dup(&(spt->sip_header.header),&s)) goto error;
+			if (!bin_decode_str(x,&s)||!str_shm_dup(&(spt->sip_header.content),&s)) goto error;
+			break;
+		case 4:
+			if (!bin_decode_char(x,&(spt->session_case))) goto error;
+			break;
+		case 5:
+			if (!bin_decode_str(x,&s)||!str_shm_dup(&(spt->session_desc.line),&s)) goto error;
+			if (!bin_decode_str(x,&s)||!str_shm_dup(&(spt->session_desc.content),&s)) goto error;
+			break;
+
+	}
+	return 1;
+	
+error:
+	LM_ERR("bin_decode_spt: Error while decoding (at %d (%04x)).\n",x->max,x->max);
+	if (spt){
+		switch (spt->type){
+			case 1:
+				if (spt->request_uri.s) shm_free(spt->request_uri.s);
+				break;
+			case 2:
+				if (spt->method.s) shm_free(spt->method.s);
+				break;
+			case 3:
+				if (spt->sip_header.header.s) shm_free(spt->sip_header.header.s);
+				if (spt->sip_header.header.s) shm_free(spt->sip_header.content.s);
+				break;
+			case 4:
+				break;
+			case 5:
+				if (spt->sip_header.header.s) shm_free(spt->session_desc.line.s);
+				if (spt->sip_header.header.s) shm_free(spt->session_desc.content.s);
+				break;
+		}
+	}
+	return 0;
+}	
+
+
+
+/**
+ *	Encode and Append a Filter Criteria
+ * @param x - binary data to append to
+ * @param spt - the service point trigger to encode
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_encode_filter_criteria(bin_data *x, ims_filter_criteria *fc)
+{
+	int i;
+	char ppindicator;
+
+	//priority
+	if (!bin_encode_int(x,fc->priority)) goto error;
+	
+	//profile part indicator
+	if (fc->profile_part_indicator) ppindicator = (*fc->profile_part_indicator)+1;
+	else ppindicator = 0;
+	if (!bin_encode_char(x,ppindicator)) goto error;
+			
+	// trigger point 
+	if (fc->trigger_point) {
+		if (!bin_encode_char(x,fc->trigger_point->condition_type_cnf)) goto error;
+		
+		if (!bin_encode_ushort(x,fc->trigger_point->spt_cnt)) goto error;
+		
+		for(i=0;i<fc->trigger_point->spt_cnt;i++)
+			if (!bin_encode_spt(x,fc->trigger_point->spt+i)) goto error;
+	} else {
+		if (!bin_encode_char(x,100)) goto error;
+	}
+	
+	//app server
+	if (!bin_encode_str(x,&(fc->application_server.server_name))) goto error;
+	if (!bin_encode_char(x,fc->application_server.default_handling)) goto error;
+	if (!bin_encode_str(x,&(fc->application_server.service_info))) goto error;
+	
+	return 1;
+error:
+	LM_ERR("bin_encode_filter_criteria: Error while encoding.\n");
+	return 0;		
+}
+
+
+/**
+ *	Decode a Filter Criteria
+ * @param x - binary data to decode from
+ * @param fc - filter criteria to decode into
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_decode_filter_criteria(bin_data *x, ims_filter_criteria *fc)
+{
+	int i,len;
+	str s;
+	char ppindicator,cnf;
+	
+	//priority
+	if (!bin_decode_int(x,&(fc->priority))) goto error;
+	
+	// profile part indicator
+	if (!bin_decode_char(x,&ppindicator)) goto error;
+	if (!ppindicator){
+		fc->profile_part_indicator = 0;
+	}
+	else {
+		fc->profile_part_indicator = (char*)shm_malloc(sizeof(char));
+		if (!fc->profile_part_indicator) {
+			LM_ERR("bin_decode_filter_criteria: Error allocating %lx bytes.\n",sizeof(int));
+			goto error;
+		}
+		*(fc->profile_part_indicator) = ppindicator-1;
+	}
+	
+	//cnf 
+	if (!bin_decode_char(x,&cnf)) goto error;
+
+	if (cnf==100)
+		fc->trigger_point=NULL;
+	else {
+		ims_trigger_point *tp=0;
+		//trigger point
+		len = sizeof(ims_trigger_point);
+		tp = (ims_trigger_point*)shm_malloc(len);
+		fc->trigger_point = tp;
+		if (!tp) {
+			LM_ERR("bin_decode_filter_criteria: Error allocating %d bytes.\n",len);
+			goto error;
+		}
+		memset(tp,0,len);
+		tp->condition_type_cnf=cnf;
+		
+		if (!bin_decode_ushort(x,&tp->spt_cnt)) goto error;
+		len = sizeof(ims_spt)*tp->spt_cnt;
+		tp->spt = (ims_spt*)shm_malloc(len);
+		if (!tp->spt) {
+			LM_ERR("bin_decode_filter_criteria: Error allocating %d bytes.\n",len);
+			goto error;
+		}
+		memset(tp->spt,0,len);
+		for(i=0;i<tp->spt_cnt;i++)
+			if (!bin_decode_spt(x,tp->spt+i)) goto error;
+	}
+	//app server uri
+	if (!bin_decode_str(x,&s)||!str_shm_dup(&(fc->application_server.server_name),&s)) goto error;
+	// app server default handling
+	if (!bin_decode_char(x,&(fc->application_server.default_handling)))goto error;
+	// app server service info
+	if (!bin_decode_str(x,&s)||!str_shm_dup(&(fc->application_server.service_info),&s)) goto error;
+
+	return 1;
+error:
+	LM_ERR("bin_decode_filter_criteria: Error while decoding (at %d (%04x)).\n",x->max,x->max);
+	if (fc){
+		if (fc->trigger_point){
+			if (fc->trigger_point){
+				if (fc->trigger_point->spt) shm_free(fc->trigger_point->spt);
+			}
+			shm_free(fc->trigger_point);
+		}
+		if (fc->application_server.server_name.s) shm_free(fc->application_server.server_name.s);
+		if (fc->application_server.service_info.s) shm_free(fc->application_server.service_info.s);
+	}
+	return 0;		
+}
+
+
+
+/**
+ *	Encode and append a Service Profile
+ * @param x - binary data to append to
+ * @param sp - the service profile to encode
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_encode_service_profile(bin_data *x,ims_service_profile *sp)
+{
+	int i;
+		
+	//public identity
+	if (!bin_encode_ushort(x,sp->public_identities_cnt)) return 0;
+	for(i=0;i<sp->public_identities_cnt;i++)
+		if (!bin_encode_public_identity(x,sp->public_identities+i)) goto error;
+	
+	//filter criteria
+	if (!bin_encode_ushort(x,sp->filter_criteria_cnt)) return 0;
+	for(i=0;i<sp->filter_criteria_cnt;i++)
+		if (!bin_encode_filter_criteria(x,sp->filter_criteria+i)) goto error;
+		
+	//cn service_auth
+	if (sp->cn_service_auth)
+		i = sp->cn_service_auth->subscribed_media_profile_id;
+	else i = 0xFFFFFFFF;
+	if (!bin_encode_int(x,i)) goto error;
+
+	//shared_ifc
+	if (!bin_encode_ushort(x,sp->shared_ifc_set_cnt)) return 0;
+	for(i=0;i<sp->shared_ifc_set_cnt;i++)
+		if (!bin_encode_int(x,sp->shared_ifc_set[i])) goto error;
+
+	return 1;
+error:
+	LM_ERR("bin_encode_service_profile: Error while encoding.\n");
+	return 0;		
+}
+
+
+/**
+ *	Decode a service profile
+ * @param x - binary data to decode from
+ * @param sp - service profile to decode into
+ * @returns 1 on succcess or 0 on error
+ */
+static int bin_decode_service_profile(bin_data *x, ims_service_profile *sp)
+{
+	int i,len;
+
+	//public identities
+	if (!bin_decode_ushort(x,&(sp->public_identities_cnt))) goto error;
+	len = sizeof(ims_public_identity)*sp->public_identities_cnt;
+	sp->public_identities = (ims_public_identity*)shm_malloc(len);
+	if (!sp->public_identities) {
+		LM_ERR("bin_decode_service_profile: Error allocating %d bytes.\n",len);
+		goto error;
+	}
+	memset(sp->public_identities,0,len);
+	for(i=0;i<sp->public_identities_cnt;i++)
+		if (!bin_decode_public_identity(x,sp->public_identities+i)) goto error;
+	
+	// filter criteria
+	if (!bin_decode_ushort(x,&(sp->filter_criteria_cnt))) goto error;	
+	len = sizeof(ims_filter_criteria)*sp->filter_criteria_cnt;
+	sp->filter_criteria = (ims_filter_criteria*)shm_malloc(len);
+	if (!sp->filter_criteria) {
+		LM_ERR("bin_decode_service_profile: Error allocating %d bytes.\n",len);
+		goto error;
+	}
+	memset(sp->filter_criteria,0,len);
+	for(i=0;i<sp->filter_criteria_cnt;i++)
+		if (!bin_decode_filter_criteria(x,sp->filter_criteria+i)) goto error;
+
+	// cn service auth
+	if (!bin_decode_int(x,&i)) goto error;
+	if (i==0xFFFFFFFF)
+		sp->cn_service_auth = 0;
+	else {
+		len = sizeof(ims_cn_service_auth);
+		sp->cn_service_auth = (ims_cn_service_auth*)shm_malloc(len);
+		if (!sp->cn_service_auth) {
+			LM_ERR("bin_decode_service_profile: Error allocating %d bytes.\n",len);
+			goto error;
+		}
+		sp->cn_service_auth->subscribed_media_profile_id=i;
+	}
+	
+	//shared ifc
+	if (!bin_decode_ushort(x,&(sp->shared_ifc_set_cnt))) goto error;	
+	len = sizeof(int)*sp->shared_ifc_set_cnt;
+	sp->shared_ifc_set = (int*)shm_malloc(len);
+	if (!sp->shared_ifc_set) {
+		LM_ERR("bin_decode_service_profile: Error allocating %d bytes.\n",len);
+		goto error;
+	}
+	memset(sp->shared_ifc_set,0,len);
+	for(i=0;i<sp->shared_ifc_set_cnt;i++)
+		if (!bin_decode_int(x,sp->shared_ifc_set+i)) goto error;
+
+	return 1;
+error:
+	LM_ERR("bin_decode_service_profile: Error while decoding (at %d (%04x)).\n",x->max,x->max);
+	if (sp) {
+		if (sp->public_identities) shm_free(sp->public_identities);
+		if (sp->filter_criteria) shm_free(sp->filter_criteria);
+		if (sp->cn_service_auth) shm_free(sp->cn_service_auth);
+		if (sp->shared_ifc_set) shm_free(sp->shared_ifc_set);
+	}
+	return 0;
+}
+
+/**
+ *	Encode the entire user profile and append it to the binary data
+ * @param x - binary data to append to
+ * @param s - the ims subscription to encode
+ * @returns 1 on succcess or 0 on error
+ */
+int bin_encode_ims_subscription(bin_data *x, ims_subscription *s)
+{
+	int i;
+	if (!bin_encode_str(x,&(s->private_identity))) goto error;
+	if (!bin_encode_ushort(x,s->service_profiles_cnt)) goto error;
+
+	for(i=0;i<s->service_profiles_cnt;i++)
+		if (!bin_encode_service_profile(x,s->service_profiles+i)) goto error;
+	
+	return 1;
+error:
+	LM_ERR("bin_encode_ims_subscription: Error while encoding.\n");
+	return 0;	
+}
+
+
+/**
+ *	Decode a binary string from a binary data structure
+ * @param x - binary data to decode from
+ * @returns the ims_subscription* where the data has been decoded
+ */
+ims_subscription *bin_decode_ims_subscription(bin_data *x)
+{
+	ims_subscription *imss=0;
+	int i,len;
+	str s;
+	
+	imss = (ims_subscription*) shm_malloc(sizeof(ims_subscription));
+	if (!imss) {
+		LM_ERR("bin_decode_ims_subscription: Error allocating %lx bytes.\n",sizeof(ims_subscription));
+		goto error;
+	}
+	memset(imss,0,sizeof(ims_subscription));
+	
+	if (!bin_decode_str(x,&s)||!str_shm_dup(&(imss->private_identity),&s)) goto error;
+	if (!bin_decode_ushort(x,	&(imss->service_profiles_cnt))) goto error;
+	
+	len = sizeof(ims_service_profile)*imss->service_profiles_cnt;
+	imss->service_profiles = (ims_service_profile*)shm_malloc(len);
+	if (!imss->service_profiles) {
+		LM_ERR("bin_decode_ims_subscription: Error allocating %d bytes.\n",len);
+		goto error;
+	}
+	memset(imss->service_profiles,0,len);
+
+	for(i=0;i<imss->service_profiles_cnt;i++)
+		if (!bin_decode_service_profile(x,imss->service_profiles+i)) goto error;
+
+	imss->lock = lock_alloc();
+	imss->lock = lock_init(imss->lock);
+	imss->ref_count = 1;
+
+	return imss;
+error:
+	LM_ERR("bin_decode_ims_subscription: Error while decoding (at %d (%04x)).\n",x->max,x->max);
+	if (imss) {
+		if (imss->private_identity.s) shm_free(imss->private_identity.s);
+		if (imss->service_profiles) shm_free(imss->service_profiles);
+		shm_free(imss);
+	}
+	return 0;
+}
+

+ 99 - 0
modules/usrloc_scscf/bin_utils.h

@@ -0,0 +1,99 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 BIN_UTILS_H
+#define	BIN_UTILS_H
+
+#include "usrloc.h"
+
+typedef struct _bin_data {
+	char* s; /*string*/
+	int len; /*string len*/
+	int max; /*allocated size of the buffer s*/ 
+} bin_data;
+
+/*
+ *		Binary encoding functions
+ */
+/* memory allocation and initialization macros */
+#define BIN_ALLOC_METHOD    shm_malloc
+#define BIN_REALLOC_METHOD  shm_realloc
+#define BIN_FREE_METHOD     shm_free
+
+inline int bin_alloc(bin_data *x, int max_len);
+inline int bin_realloc(bin_data *x, int delta);
+inline int bin_expand(bin_data *x, int delta);
+inline void bin_free(bin_data *x);
+inline void bin_print(bin_data *x);
+
+inline int bin_encode_char(bin_data *x,char k);
+inline int bin_decode_char(bin_data *x,char *c);
+
+inline int bin_encode_uchar(bin_data *x,unsigned char k); 
+inline int bin_decode_uchar(bin_data *x,unsigned char *c);
+
+inline int bin_encode_short(bin_data *x,short k);
+inline int bin_decode_short(bin_data *x,short *c);
+
+inline int bin_encode_ushort(bin_data *x,unsigned short k); 
+inline int bin_decode_ushort(bin_data *x,unsigned short *c);
+
+inline int bin_encode_int(bin_data *x,int k);
+inline int bin_decode_int(bin_data *x,int *c);
+
+inline int bin_encode_uint(bin_data *x,unsigned int k); 
+inline int bin_decode_uint(bin_data *x,unsigned int *c);
+
+inline int bin_encode_time_t(bin_data *x,time_t k);
+inline int bin_decode_time_t(bin_data *x,time_t *c);
+
+inline int bin_encode_str(bin_data *x,str *s);
+inline int bin_decode_str(bin_data *x,str *s);
+
+int bin_encode_ims_subscription(bin_data *x, ims_subscription *s);
+ims_subscription *bin_decode_ims_subscription(bin_data *x);
+
+#endif	/* BIN_UTILS_H */
+

+ 442 - 0
modules/usrloc_scscf/dlist.c

@@ -0,0 +1,442 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "dlist.h"
+#include <stdlib.h>	       /* abort */
+#include <string.h>            /* strlen, memcmp */
+#include <stdio.h>             /* printf */
+#include "../../ut.h"
+#include "../../lib/srdb1/db_ut.h"
+#include "../../mem/shm_mem.h"
+#include "../../dprint.h"
+#include "../../ip_addr.h"
+#include "../../socket_info.h"
+#include "udomain.h"           /* new_udomain, free_udomain */
+#include "usrloc.h"
+#include "utime.h"
+#include "ul_mod.h"
+
+
+/*! \brief Global list of all registered domains */
+dlist_t* root = 0;
+
+
+/*!
+ * \brief Find domain with the given name
+ * \param _n domain name
+ * \param _d pointer to domain
+ * \return 0 if the domain was found and 1 of not
+ */
+static inline int find_dlist(str* _n, dlist_t** _d)
+{
+	dlist_t* ptr;
+
+	ptr = root;
+	while(ptr) {
+		if ((_n->len == ptr->name.len) &&
+		    !memcmp(_n->s, ptr->name.s, _n->len)) {
+			*_d = ptr;
+			return 0;
+		}
+		
+		ptr = ptr->next;
+	}
+	
+	return 1;
+}
+
+
+/*!
+ * \brief Get all contacts from the memory, in partitions if wanted
+ * \see get_all_ucontacts
+ * \param buf target buffer
+ * \param len length of buffer
+ * \param flags contact flags
+ * \param part_idx part index
+ * \param part_max maximal part
+ * \return 0 on success, positive if buffer size was not sufficient, negative on failure
+ */
+static inline int get_all_mem_ucontacts(void *buf, int len, unsigned int flags,
+								unsigned int part_idx, unsigned int part_max)
+{
+	dlist_t *p;
+	impurecord_t *r;
+	ucontact_t *c;
+	void *cp;
+	int shortage;
+	int needed;
+	int i = 0;
+	cp = buf;
+	shortage = 0;
+	/* Reserve space for terminating 0000 */
+	len -= sizeof(c->c.len);
+
+	for (p = root; p != NULL; p = p->next) {
+
+		for(i=0; i<p->d->size; i++) {
+
+			if ( (i % part_max) != part_idx )
+				continue;
+
+			lock_ulslot(p->d, i);
+			if(p->d->table[i].n<=0)
+			{
+				unlock_ulslot(p->d, i);
+				continue;
+			}
+			for (r = p->d->table[i].first; r != NULL; r = r->next) {
+				for (c = r->contacts; c != NULL; c = c->next) {
+					if (c->c.len <= 0)
+						continue;
+					/*
+					 * List only contacts that have all requested
+					 * flags set
+					 */
+					if ((c->cflags & flags) != flags)
+						continue;
+					if (c->received.s) {
+						needed = (int)(sizeof(c->received.len)
+								+ c->received.len + sizeof(c->sock)
+								+ sizeof(c->cflags) + sizeof(c->path.len)
+								+ c->path.len);
+						if (len >= needed) {
+							memcpy(cp,&c->received.len,sizeof(c->received.len));
+							cp = (char*)cp + sizeof(c->received.len);
+							memcpy(cp, c->received.s, c->received.len);
+							cp = (char*)cp + c->received.len;
+							memcpy(cp, &c->sock, sizeof(c->sock));
+							cp = (char*)cp + sizeof(c->sock);
+							memcpy(cp, &c->cflags, sizeof(c->cflags));
+							cp = (char*)cp + sizeof(c->cflags);
+							memcpy(cp, &c->path.len, sizeof(c->path.len));
+							cp = (char*)cp + sizeof(c->path.len);
+							memcpy(cp, c->path.s, c->path.len);
+							cp = (char*)cp + c->path.len;
+							len -= needed;
+						} else {
+							shortage += needed;
+						}
+					} else {
+						needed = (int)(sizeof(c->c.len) + c->c.len +
+							sizeof(c->sock) + sizeof(c->cflags) +
+							sizeof(c->path.len) + c->path.len);
+						if (len >= needed) {
+							memcpy(cp, &c->c.len, sizeof(c->c.len));
+							cp = (char*)cp + sizeof(c->c.len);
+							memcpy(cp, c->c.s, c->c.len);
+							cp = (char*)cp + c->c.len;
+							memcpy(cp, &c->sock, sizeof(c->sock));
+							cp = (char*)cp + sizeof(c->sock);
+							memcpy(cp, &c->cflags, sizeof(c->cflags));
+							cp = (char*)cp + sizeof(c->cflags);
+							memcpy(cp, &c->path.len, sizeof(c->path.len));
+							cp = (char*)cp + sizeof(c->path.len);
+							memcpy(cp, c->path.s, c->path.len);
+							cp = (char*)cp + c->path.len;
+							len -= needed;
+						} else {
+							shortage += needed;
+						}
+					}
+				}
+			}
+			unlock_ulslot(p->d, i);
+		}
+	}
+	/* len < 0 is possible, if size of the buffer < sizeof(c->c.len) */
+	if (len >= 0)
+		memset(cp, 0, sizeof(c->c.len));
+
+	/* Shouldn't happen */
+	if (shortage > 0 && len > shortage) {
+		abort();
+	}
+
+	shortage -= len;
+
+	return shortage > 0 ? shortage : 0;
+}
+
+
+
+/*!
+ * \brief Get all contacts from the usrloc, in partitions if wanted
+ *
+ * Return list of all contacts for all currently registered
+ * users in all domains. The caller must provide buffer of
+ * sufficient length for fitting all those contacts. In the
+ * case when buffer was exhausted, the function returns
+ * estimated amount of additional space needed, in this
+ * case the caller is expected to repeat the call using
+ * this value as the hint.
+ *
+ * Information is packed into the buffer as follows:
+ *
+ * +------------+----------+-----+------+-----+
+ * |contact1.len|contact1.s|sock1|flags1|path1|
+ * +------------+----------+-----+------+-----+
+ * |contact2.len|contact2.s|sock2|flags2|path1|
+ * +------------+----------+-----+------+-----+
+ * |..........................................|
+ * +------------+----------+-----+------+-----+
+ * |contactN.len|contactN.s|sockN|flagsN|pathN|
+ * +------------+----------+-----+------+-----+
+ * |000000000000|
+ * +------------+
+ *
+ * \param buf target buffer
+ * \param len length of buffer
+ * \param flags contact flags
+ * \param part_idx part index
+ * \param part_max maximal part
+ * \return 0 on success, positive if buffer size was not sufficient, negative on failure
+ */
+int get_all_ucontacts(void *buf, int len, unsigned int flags,
+								unsigned int part_idx, unsigned int part_max)
+{
+	return get_all_mem_ucontacts( buf, len, flags, part_idx, part_max);
+}
+
+
+
+/*!
+ * \brief Create a new domain structure
+ * \return 0 if everything went OK, otherwise value < 0 is returned
+ *
+ * \note The structure is NOT created in shared memory so the
+ * function must be called before the server forks if it should
+ * be available to all processes
+ */
+static inline int new_dlist(str* _n, dlist_t** _d)
+{
+	dlist_t* ptr;
+
+	/* Domains are created before ser forks,
+	 * so we can create them using pkg_malloc
+	 */
+	ptr = (dlist_t*)shm_malloc(sizeof(dlist_t));
+	if (ptr == 0) {
+		LM_ERR("no more share memory\n");
+		return -1;
+	}
+	memset(ptr, 0, sizeof(dlist_t));
+
+	/* copy domain name as null terminated string */
+	ptr->name.s = (char*)shm_malloc(_n->len+1);
+	if (ptr->name.s == 0) {
+		LM_ERR("no more memory left\n");
+		shm_free(ptr);
+		return -2;
+	}
+
+	memcpy(ptr->name.s, _n->s, _n->len);
+	ptr->name.len = _n->len;
+	ptr->name.s[ptr->name.len] = 0;
+
+	if (new_udomain(&(ptr->name), ul_hash_size, &(ptr->d)) < 0) {
+		LM_ERR("creating domain structure failed\n");
+		shm_free(ptr->name.s);
+		shm_free(ptr);
+		return -3;
+	}
+
+	*_d = ptr;
+	return 0;
+}
+
+/*!
+ * \brief Registers a new domain with usrloc
+ *
+ * Find and return a usrloc domain (location table)
+ * \param _n domain name
+ * \param _d usrloc domain
+ * \return 0 on success, -1 on failure
+ */
+int get_udomain(const char* _n, udomain_t** _d)
+{
+	dlist_t* d;
+	str s;
+
+	s.s = (char*)_n;
+	s.len = strlen(_n);
+
+	if (find_dlist(&s, &d) == 0) {
+		*_d = d->d;
+		return 0;
+	}
+	*_d = NULL;
+	return -1;
+}
+
+/*!
+ * \brief Registers a new domain with usrloc
+ *
+ * Registers a new domain with usrloc. If the domain exists,
+ * a pointer to existing structure will be returned, otherwise
+ * a new domain will be created
+ * \param _n domain name
+ * \param _d new created domain
+ * \return 0 on success, -1 on failure
+ */
+int register_udomain(const char* _n, udomain_t** _d)
+{
+	dlist_t* d;
+	str s;
+
+	s.s = (char*)_n;
+	s.len = strlen(_n);
+
+	if (find_dlist(&s, &d) == 0) {
+		*_d = d->d;
+		return 0;
+	}
+	
+	if (new_dlist(&s, &d) < 0) {
+		LM_ERR("failed to create new domain\n");
+		return -1;
+	}
+
+	d->next = root;
+	root = d;
+	
+	*_d = d->d;
+	return 0;
+}
+
+
+/*!
+ * \brief Free all allocated memory for domains
+ */
+void free_all_udomains(void)
+{
+	dlist_t* ptr;
+
+	while(root) {
+		ptr = root;
+		root = root->next;
+
+		free_udomain(ptr->d);
+		shm_free(ptr->name.s);
+		shm_free(ptr);
+	}
+}
+
+
+/*!
+ * \brief Print all domains, just for debugging
+ * \param _f output file
+ */
+void print_all_udomains(FILE* _f)
+{
+	dlist_t* ptr;
+	
+	ptr = root;
+
+	fprintf(_f, "===Domain list===\n");
+	while(ptr) {
+		print_udomain(_f, ptr->d);
+		ptr = ptr->next;
+	}
+	fprintf(_f, "===/Domain list===\n");
+}
+
+
+/*!
+ * \brief Loops through all domains summing up the number of users
+ * \return the number of users, could be zero
+ */
+unsigned long get_number_of_users(void)
+{
+	long numberOfUsers = 0;
+
+	dlist_t* current_dlist;
+	
+	current_dlist = root;
+
+	while (current_dlist)
+	{
+		numberOfUsers += get_stat_val(current_dlist->d->users); 
+		current_dlist  = current_dlist->next;
+	}
+
+	return numberOfUsers;
+}
+
+
+/*!
+ * \brief Run timer handler of all domains
+ * \return 0 if all timer return 0, != 0 otherwise
+ */
+int synchronize_all_udomains(void)
+{
+	int res = 0;
+	dlist_t* ptr;
+
+	get_act_time(); /* Get and save actual time */
+
+	for( ptr=root ; ptr ; ptr=ptr->next)
+		mem_timer_udomain(ptr->d);
+
+	return res;
+}
+
+
+/*!
+ * \brief Find a particular domain, small wrapper around find_dlist
+ * \param _d domain name
+ * \param _p pointer to domain if found
+ * \return 1 if domain was found, 0 otherwise
+ */
+int find_domain(str* _d, udomain_t** _p)
+{
+	dlist_t* d;
+
+	if (find_dlist(_d, &d) == 0) {
+	        *_p = d->d;
+		return 0;
+	}
+
+	return 1;
+}

+ 162 - 0
modules/usrloc_scscf/dlist.h

@@ -0,0 +1,162 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 DLIST_H
+#define DLIST_H
+
+#include <stdio.h>
+#include "../../str.h"
+#include "usrloc.h"
+#include "udomain.h"
+
+/*!
+ * List of all domains registered with usrloc
+ */
+typedef struct dlist {
+	str name;            /*!< Name of the domain (null terminated) */
+	udomain_t* d;        /*!< Payload */
+	struct dlist* next;  /*!< Next element in the list */
+} dlist_t;
+
+/*! \brief Global list of all registered domains */
+extern dlist_t* root;
+
+
+/*!
+ * \brief Registers a new domain with usrloc
+ *
+ * Registers a new domain with usrloc. If the domain exists,
+ * a pointer to existing structure will be returned, otherwise
+ * a new domain will be created
+ * \param _n domain name
+ * \param _d new created domain
+ * \return 0 on success, -1 on failure
+ */
+int register_udomain(const char* _n, udomain_t** _d);
+
+
+/*!
+ * \brief Free all allocated memory for domains
+ */
+void free_all_udomains(void);
+
+
+/*!
+ * \brief Print all domains, just for debugging
+ * \param _f output file
+ */
+void print_all_udomains(FILE* _f);
+
+
+/*!
+ * \brief Run timer handler of all domains
+ * \return 0 if all timer return 0, != 0 otherwise
+ */
+int synchronize_all_udomains(void);
+
+
+/*!
+ * \brief Get all contacts from the usrloc, in partitions if wanted
+ *
+ * Return list of all contacts for all currently registered
+ * users in all domains. The caller must provide buffer of
+ * sufficient length for fitting all those contacts. In the
+ * case when buffer was exhausted, the function returns
+ * estimated amount of additional space needed, in this
+ * case the caller is expected to repeat the call using
+ * this value as the hint.
+ *
+ * Information is packed into the buffer as follows:
+ *
+ * +------------+----------+-----+------+-----+
+ * |contact1.len|contact1.s|sock1|flags1|path1|
+ * +------------+----------+-----+------+-----+
+ * |contact2.len|contact2.s|sock2|flags2|path1|
+ * +------------+----------+-----+------+-----+
+ * |..........................................|
+ * +------------+----------+-----+------+-----+
+ * |contactN.len|contactN.s|sockN|flagsN|pathN|
+ * +------------+----------+-----+------+-----+
+ * |000000000000|
+ * +------------+
+ *
+ * \param buf target buffer
+ * \param len length of buffer
+ * \param flags contact flags
+ * \param part_idx part index
+ * \param part_max maximal part
+ * \return 0 on success, positive if buffer size was not sufficient, negative on failure
+ */
+int get_all_ucontacts(void *buf, int len, unsigned int flags,
+		unsigned int part_idx, unsigned int part_max);
+
+
+/*!
+ * \brief Find and return usrloc domain
+ *
+ * \param _n domain name
+ * \param _d usrloc domain (location table)
+ * \return 0 on success, -1 on failure
+ */
+ int get_udomain(const char* _n, udomain_t** _d);
+
+/*!
+ * \brief Loops through all domains summing up the number of users
+ * \return the number of users, could be zero
+ */
+unsigned long get_number_of_users(void);
+
+
+/*!
+ * \brief Find a particular domain, small wrapper around find_dlist
+ * \param _d domain name
+ * \param _p pointer to domain if found
+ * \return 1 if domain was found, 0 otherwise
+ */
+int find_domain(str* _d, udomain_t** _p);
+
+
+#endif

+ 853 - 0
modules/usrloc_scscf/hs_err_pid18814.log

@@ -0,0 +1,853 @@
+#
+# A fatal error has been detected by the Java Runtime Environment:
+#
+#  SIGSEGV (0xb) at pc=0x00007faa39743afb, pid=18814, tid=140368981010176
+#
+# JRE version: 6.0_24-b07
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode linux-amd64 compressed oops)
+# Problematic frame:
+# V  [libjvm.so+0x691afb]
+#
+# If you would like to submit a bug report, please visit:
+#   http://java.sun.com/webapps/bugreport/crash.jsp
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00007faa2c06b800):  VMThread [stack: 0x00007faa33302000,0x00007faa33403000] [id=18824]
+
+siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000030070810
+
+Registers:
+RAX=0x0000000000000001, RBX=0x00007faa39a6b080, RCX=0x0000000000000003, RDX=0x00000000300707f8
+RSP=0x00007faa33401360, RBP=0x00007faa334013d0, RSI=0x00007faa39a4f0d0, RDI=0x0000000030070808
+R8 =0x000000000000017e, R9 =0x000000000000017e, R10=0x00000007fc049dbd, R11=0x00007faa33403c00
+R12=0x00000007fa35b780, R13=0x0907003e04000700, R14=0x0000000000000000, R15=0x0000000000000001
+RIP=0x00007faa39743afb, EFL=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
+  TRAPNO=0x000000000000000e
+
+Register to memory mapping:
+
+RAX=0x0000000000000001
+0x0000000000000001 is pointing to unknown location
+
+RBX=0x00007faa39a6b080
+0x00007faa39a6b080: <offset 0x9b9080> in /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so at 0x00007faa390b2000
+
+RCX=0x0000000000000003
+0x0000000000000003 is pointing to unknown location
+
+RDX=0x00000000300707f8
+0x00000000300707f8 is pointing to unknown location
+
+RSP=0x00007faa33401360
+0x00007faa33401360 is pointing to unknown location
+
+RBP=0x00007faa334013d0
+0x00007faa334013d0 is pointing to unknown location
+
+RSI=0x00007faa39a4f0d0
+0x00007faa39a4f0d0: <offset 0x99d0d0> in /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so at 0x00007faa390b2000
+
+RDI=0x0000000030070808
+0x0000000030070808 is pointing to unknown location
+
+R8 =0x000000000000017e
+0x000000000000017e is pointing to unknown location
+
+R9 =0x000000000000017e
+0x000000000000017e is pointing to unknown location
+
+R10=0x00000007fc049dbd
+
+[error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xe0000000]
+
+Stack: [0x00007faa33302000,0x00007faa33403000],  sp=0x00007faa33401360,  free space=1020k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+V  [libjvm.so+0x691afb]
+V  [libjvm.so+0x6924fd]
+V  [libjvm.so+0x69196f]
+V  [libjvm.so+0x6947cd]
+V  [libjvm.so+0x6994f7]
+V  [libjvm.so+0x699b45]
+V  [libjvm.so+0x698465]
+V  [libjvm.so+0x6935a9]
+V  [libjvm.so+0x692ac7]
+V  [libjvm.so+0x655fee]
+V  [libjvm.so+0x792739]
+V  [libjvm.so+0x79fa5a]
+V  [libjvm.so+0x79f042]
+V  [libjvm.so+0x79f2b3]
+V  [libjvm.so+0x79edbe]
+V  [libjvm.so+0x64314f]
+
+VM_Operation (0x00007faa244e1d00): ParallelGCFailedAllocation, mode: safepoint, requested by thread 0x0000000041db2800
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x00000000426e6000 JavaThread "[ThreadPool Manager] - Idle Thread" daemon [_thread_blocked, id=18889, stack(0x00007faa161ad000,0x00007faa162ae000)]
+  0x0000000042d87800 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_blocked, id=18881, stack(0x00007faa169b5000,0x00007faa16ab6000)]
+  0x00007faa2e1ce800 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_blocked, id=18871, stack(0x00007faa1c0db000,0x00007faa1c1dc000)]
+  0x00000000421af800 JavaThread "Worker-16" [_thread_blocked, id=18870, stack(0x00007faa1fdfe000,0x00007faa1feff000)]
+  0x0000000041db1000 JavaThread "Worker-15" [_thread_blocked, id=18869, stack(0x00007faa1feff000,0x00007faa20000000)]
+  0x00007faa2003e800 JavaThread "Worker-14" [_thread_blocked, id=18868, stack(0x00007faa240e0000,0x00007faa241e1000)]
+  0x0000000041db0000 JavaThread "Worker-13" [_thread_blocked, id=18867, stack(0x00007faa241e1000,0x00007faa242e2000)]
+  0x00007faa2003c800 JavaThread "Worker-12" [_thread_blocked, id=18866, stack(0x00007faa242e2000,0x00007faa243e3000)]
+  0x0000000041db2800 JavaThread "Worker-11" [_thread_blocked, id=18865, stack(0x00007faa243e3000,0x00007faa244e4000)]
+  0x00000000420ea800 JavaThread "Worker-10" [_thread_blocked, id=18864, stack(0x00007faa244e4000,0x00007faa245e5000)]
+  0x0000000043785000 JavaThread "Worker-9" [_thread_blocked, id=18863, stack(0x00007faa245e5000,0x00007faa246e6000)]
+  0x0000000043784000 JavaThread "Worker-8" [_thread_blocked, id=18862, stack(0x00007faa246e6000,0x00007faa247e7000)]
+  0x00007faa2000c800 JavaThread "Worker-7" [_thread_blocked, id=18861, stack(0x00007faa247e7000,0x00007faa248e8000)]
+  0x00007faa20003000 JavaThread "Worker-6" [_thread_blocked, id=18860, stack(0x00007faa248e8000,0x00007faa249e9000)]
+  0x00007faa2003b000 JavaThread "Worker-5" [_thread_blocked, id=18859, stack(0x00007faa249e9000,0x00007faa24aea000)]
+  0x0000000043783000 JavaThread "Worker-4" [_thread_blocked, id=18858, stack(0x00007faa24aea000,0x00007faa24beb000)]
+  0x0000000041f76800 JavaThread "Worker-3" [_thread_blocked, id=18857, stack(0x00007faa25ca4000,0x00007faa25da5000)]
+  0x0000000041fc8800 JavaThread "Worker-2" [_thread_blocked, id=18856, stack(0x00007faa25df6000,0x00007faa25ef7000)]
+  0x00007faa2c7ee800 JavaThread "Java indexing" daemon [_thread_blocked, id=18855, stack(0x00007faa251fe000,0x00007faa252ff000)]
+  0x00007faa2e379000 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=18854, stack(0x00007faa24ff4000,0x00007faa250f5000)]
+  0x0000000041a69800 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_blocked, id=18853, stack(0x00007faa250fd000,0x00007faa251fe000)]
+  0x00000000421e7800 JavaThread "Worker-1" [_thread_blocked, id=18841, stack(0x00007faa25848000,0x00007faa25949000)]
+  0x000000004199a000 JavaThread "Worker-0" [_thread_blocked, id=18839, stack(0x00007faa26db6000,0x00007faa26eb7000)]
+  0x00007faa2d384800 JavaThread "Worker-JM" [_thread_blocked, id=18838, stack(0x00007faa26bb4000,0x00007faa26cb5000)]
+  0x0000000041c9b000 JavaThread "[Timer] - Main Queue Handler" daemon [_thread_blocked, id=18837, stack(0x00007faa26cb5000,0x00007faa26db6000)]
+  0x00007faa2cda0800 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=18835, stack(0x00007faa26eb7000,0x00007faa26fb8000)]
+  0x00000000418a2800 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=18834, stack(0x00007faa26fb8000,0x00007faa270b9000)]
+  0x0000000041970800 JavaThread "State Data Manager" daemon [_thread_blocked, id=18833, stack(0x00007faa270b9000,0x00007faa271ba000)]
+  0x0000000041acd800 JavaThread "Framework Active Thread" [_thread_blocked, id=18832, stack(0x00007faa271ba000,0x00007faa272bb000)]
+  0x00007faa2c097800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=18830, stack(0x00007faa32618000,0x00007faa32719000)]
+  0x00007faa2c095000 JavaThread "CompilerThread1" daemon [_thread_blocked, id=18829, stack(0x00007faa32719000,0x00007faa3281a000)]
+  0x00007faa2c092000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=18828, stack(0x00007faa3281a000,0x00007faa3291b000)]
+  0x00007faa2c090000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=18827, stack(0x00007faa3291b000,0x00007faa32a1c000)]
+  0x00007faa2c074000 JavaThread "Finalizer" daemon [_thread_blocked, id=18826, stack(0x00007faa33100000,0x00007faa33201000)]
+  0x00007faa2c072000 JavaThread "Reference Handler" daemon [_thread_blocked, id=18825, stack(0x00007faa33201000,0x00007faa33302000)]
+  0x00000000417b5000 JavaThread "main" [_thread_blocked, id=18815, stack(0x00007faa38d2d000,0x00007faa38e2e000)]
+
+Other Threads:
+=>0x00007faa2c06b800 VMThread [stack: 0x00007faa33302000,0x00007faa33403000] [id=18824]
+  0x00007faa2c0a2800 WatcherThread [stack: 0x00007faa32517000,0x00007faa32618000] [id=18831]
+
+VM state:at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
+[0x00000000417b2040] Threads_lock - owner thread: 0x00007faa2c06b800
+[0x00000000417b2540] Heap_lock - owner thread: 0x0000000041db2800
+
+Heap
+ PSYoungGen      total 568064K, used 568059K [0x00000007d5560000, 0x0000000800000000, 0x0000000800000000)
+  eden space 524416K, 100% used [0x00000007d5560000,0x00000007f5580000,0x00000007f5580000)
+  from space 43648K, 99% used [0x00000007f5580000,0x00000007f801edc0,0x00000007f8020000)
+  to   space 116160K, 43% used [0x00000007f8e90000,0x00000007fc04edc8,0x0000000800000000)
+ PSOldGen        total 699072K, used 142199K [0x0000000780000000, 0x00000007aaab0000, 0x00000007d5560000)
+  object space 699072K, 20% used [0x0000000780000000,0x0000000788adde90,0x00000007aaab0000)
+ PSPermGen       total 116864K, used 116757K [0x0000000770000000, 0x0000000777220000, 0x0000000780000000)
+  object space 116864K, 99% used [0x0000000770000000,0x0000000777205428,0x0000000777220000)
+
+Dynamic libraries:
+40000000-40009000 r-xp 00000000 08:02 17432867                           /opt/jdk1.6.0_24/bin/java
+40108000-4010a000 rwxp 00008000 08:02 17432867                           /opt/jdk1.6.0_24/bin/java
+417ac000-439ae000 rwxp 00000000 00:00 0                                  [heap]
+770000000-777220000 rwxp 00000000 00:00 0 
+777220000-780000000 rwxp 00000000 00:00 0 
+780000000-7aaab0000 rwxp 00000000 00:00 0 
+7aaab0000-7d5560000 rwxp 00000000 00:00 0 
+7d5560000-800000000 rwxp 00000000 00:00 0 
+7faa1612e000-7faa161ad000 r-xs 00740000 08:02 4332062                    /opt/eclipse/plugins/org.eclipse.wst.jsdt.ui_1.1.102.v201201131900.jar
+7faa161ad000-7faa161b0000 ---p 00000000 00:00 0 
+7faa161b0000-7faa162ae000 rwxp 00000000 00:00 0 
+7faa162ae000-7faa162b1000 ---p 00000000 00:00 0 
+7faa162b1000-7faa163af000 rwxp 00000000 00:00 0 
+7faa163af000-7faa163b2000 ---p 00000000 00:00 0 
+7faa163b2000-7faa164b0000 rwxp 00000000 00:00 0 
+7faa164b0000-7faa164b3000 ---p 00000000 00:00 0 
+7faa164b3000-7faa165b1000 rwxp 00000000 00:00 0 
+7faa165b1000-7faa165b4000 ---p 00000000 00:00 0 
+7faa165b4000-7faa166b2000 rwxp 00000000 00:00 0 
+7faa166b2000-7faa166b5000 ---p 00000000 00:00 0 
+7faa166b5000-7faa167b3000 rwxp 00000000 00:00 0 
+7faa167b3000-7faa167b6000 ---p 00000000 00:00 0 
+7faa167b6000-7faa168b4000 rwxp 00000000 00:00 0 
+7faa168b4000-7faa168b7000 ---p 00000000 00:00 0 
+7faa168b7000-7faa169b5000 rwxp 00000000 00:00 0 
+7faa169b5000-7faa169b8000 ---p 00000000 00:00 0 
+7faa169b8000-7faa16ab6000 rwxp 00000000 00:00 0 
+7faa16ab6000-7faa16ac3000 r-xp 00000000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7faa16ac3000-7faa16cc2000 ---p 0000d000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7faa16cc2000-7faa16cc3000 r-xp 0000c000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7faa16cc3000-7faa16cc4000 rwxp 0000d000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7faa16cc4000-7faa16d06000 r-xp 00000000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7faa16d06000-7faa16f06000 ---p 00042000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7faa16f06000-7faa16f07000 r-xp 00042000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7faa16f07000-7faa16f08000 rwxp 00043000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7faa16f08000-7faa16f1e000 r-xp 00000000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7faa16f1e000-7faa1711d000 ---p 00016000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7faa1711d000-7faa1711e000 r-xp 00015000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7faa1711e000-7faa1711f000 rwxp 00016000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7faa1711f000-7faa18000000 r-xp 00000000 08:02 3807043                    /usr/share/icons/hicolor/icon-theme.cache
+7faa18000000-7faa1b157000 rwxp 00000000 00:00 0 
+7faa1b157000-7faa1c000000 ---p 00000000 00:00 0 
+7faa1c04b000-7faa1c0a9000 r-xs 00696000 08:02 7345127                    /home/jaybeepee/android-sdk/android-sdk-linux/platforms/android-13/data/layoutlib.jar
+7faa1c0a9000-7faa1c0db000 r-xs 0062f000 08:02 4329919                    /opt/eclipse/plugins/com.android.ide.eclipse.adt_20.0.1.v201207132230-403220.jar
+7faa1c0db000-7faa1c0de000 ---p 00000000 00:00 0 
+7faa1c0de000-7faa1c1dc000 rwxp 00000000 00:00 0 
+7faa1c1dc000-7faa1c205000 r-xp 00000000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7faa1c205000-7faa1c405000 ---p 00029000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7faa1c405000-7faa1c406000 r-xp 00029000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7faa1c406000-7faa1c407000 rwxp 0002a000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7faa1c407000-7faa1c408000 rwxp 00000000 00:00 0 
+7faa1c408000-7faa1fd69000 r-xp 00000000 08:02 3806958                    /usr/share/icons/gnome/icon-theme.cache
+7faa1fd69000-7faa1fdb2000 r-xs 0040a000 08:02 4331587                    /opt/eclipse/plugins/org.eclipse.cdt.core_5.3.2.201202111925.jar
+7faa1fdfe000-7faa1fe01000 ---p 00000000 00:00 0 
+7faa1fe01000-7faa1feff000 rwxp 00000000 00:00 0 
+7faa1feff000-7faa1ff02000 ---p 00000000 00:00 0 
+7faa1ff02000-7faa20000000 rwxp 00000000 00:00 0 
+7faa20000000-7faa23567000 rwxp 00000000 00:00 0 
+7faa23567000-7faa24000000 ---p 00000000 00:00 0 
+7faa24020000-7faa240b5000 r-xs 00929000 08:02 4331979                    /opt/eclipse/plugins/org.eclipse.jdt.ui_3.7.2.v20120109-1427.jar
+7faa240e0000-7faa240e3000 ---p 00000000 00:00 0 
+7faa240e3000-7faa241e1000 rwxp 00000000 00:00 0 
+7faa241e1000-7faa241e4000 ---p 00000000 00:00 0 
+7faa241e4000-7faa242e2000 rwxp 00000000 00:00 0 
+7faa242e2000-7faa242e5000 ---p 00000000 00:00 0 
+7faa242e5000-7faa243e3000 rwxp 00000000 00:00 0 
+7faa243e3000-7faa243e6000 ---p 00000000 00:00 0 
+7faa243e6000-7faa244e4000 rwxp 00000000 00:00 0 
+7faa244e4000-7faa244e7000 ---p 00000000 00:00 0 
+7faa244e7000-7faa245e5000 rwxp 00000000 00:00 0 
+7faa245e5000-7faa245e8000 ---p 00000000 00:00 0 
+7faa245e8000-7faa246e6000 rwxp 00000000 00:00 0 
+7faa246e6000-7faa246e9000 ---p 00000000 00:00 0 
+7faa246e9000-7faa247e7000 rwxp 00000000 00:00 0 
+7faa247e7000-7faa247ea000 ---p 00000000 00:00 0 
+7faa247ea000-7faa248e8000 rwxp 00000000 00:00 0 
+7faa248e8000-7faa248eb000 ---p 00000000 00:00 0 
+7faa248eb000-7faa249e9000 rwxp 00000000 00:00 0 
+7faa249e9000-7faa249ec000 ---p 00000000 00:00 0 
+7faa249ec000-7faa24aea000 rwxp 00000000 00:00 0 
+7faa24aea000-7faa24aed000 ---p 00000000 00:00 0 
+7faa24aed000-7faa24beb000 rwxp 00000000 00:00 0 
+7faa24beb000-7faa24c4b000 rwxs 00000000 00:04 2719762                    /SYSV00000000 (deleted)
+7faa24c53000-7faa24c62000 r-xs 0005f000 08:02 10623564                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/propertysheet.jar
+7faa24c62000-7faa24c71000 r-xs 000f3000 08:02 10623486                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lombok-ast-0.2.jar
+7faa24c71000-7faa24c92000 r-xs 00178000 08:02 4331510                    /opt/eclipse/plugins/org.eclipse.mylyn.tasks.ui_3.6.5.v20120215-0100.jar
+7faa24c92000-7faa24cab000 r-xs 000ed000 08:02 4331580                    /opt/eclipse/plugins/org.eclipse.cdt.debug.ui_7.1.2.201202111925.jar
+7faa24cb7000-7faa24cc5000 r-xs 000a6000 08:02 4332164                    /opt/eclipse/plugins/org.eclipse.wst.xml.core_1.1.602.v201201091944.jar
+7faa24cc5000-7faa24d0c000 r-xs 003b3000 08:02 4331552                    /opt/eclipse/plugins/org.eclipse.ui.workbench_3.7.1.v20120104-1859.jar
+7faa24d0c000-7faa24d46000 r-xp 00000000 08:02 3279503                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
+7faa24d46000-7faa24d82000 r-xp 00000000 08:02 3279504                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
+7faa24d82000-7faa24dcf000 r-xp 00000000 08:02 3279502                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
+7faa24dcf000-7faa24e21000 r-xp 00000000 08:02 3279505                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
+7faa24e23000-7faa24eb9000 r-xp 00000000 08:02 3279494                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
+7faa24eb9000-7faa24f4f000 r-xp 00000000 08:02 3279496                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
+7faa24f4f000-7faa24ff4000 r-xp 00000000 08:02 3279493                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
+7faa24ff4000-7faa24ff7000 ---p 00000000 00:00 0 
+7faa24ff7000-7faa250f5000 rwxp 00000000 00:00 0 
+7faa250f5000-7faa250fd000 r-xs 00115000 08:02 17436760                   /opt/jdk1.6.0_24/jre/lib/resources.jar
+7faa250fd000-7faa25100000 ---p 00000000 00:00 0 
+7faa25100000-7faa251fe000 rwxp 00000000 00:00 0 
+7faa251fe000-7faa25201000 ---p 00000000 00:00 0 
+7faa25201000-7faa252ff000 rwxp 00000000 00:00 0 
+7faa252ff000-7faa25303000 r-xp 00000000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7faa25303000-7faa25502000 ---p 00004000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7faa25502000-7faa25503000 rwxp 00003000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7faa25505000-7faa25519000 r-xs 000f3000 08:02 4331565                    /opt/eclipse/plugins/org.eclipse.jface_3.7.0.v20110928-1505.jar
+7faa25524000-7faa25538000 r-xs 0024b000 08:02 4331792                    /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f.jar
+7faa25538000-7faa25542000 r-xs 00076000 08:02 4332104                    /opt/eclipse/plugins/org.eclipse.wst.css.core_1.1.501.v201111292150.jar
+7faa25542000-7faa2554c000 r-xs 00062000 08:02 4332138                    /opt/eclipse/plugins/org.eclipse.wst.sse.core_1.1.602.v201112071516.jar
+7faa2554c000-7faa25581000 r-xs 00571000 08:02 4330718                    /opt/eclipse/plugins/org.eclipse.jdt.core_3.7.3.v_OTDT_r202_201202051448.jar
+7faa25589000-7faa25593000 r-xs 00085000 08:02 4331378                    /opt/eclipse/plugins/org.eclipse.team.cvs.core_3.3.400.I20110510-0800.jar
+7faa255e4000-7faa25654000 r-xs 007ed000 08:02 9704824                    /home/jaybeepee/android-sdk/android-sdk-linux/platforms/android-16/data/layoutlib.jar
+7faa25654000-7faa2569e000 r-xs 003c3000 08:02 4332269                    /opt/eclipse/plugins/org.eclipse.pde.ui_3.6.100.v20120103_r372.jar
+7faa2569e000-7faa256b1000 r-xs 000dd000 08:02 4331512                    /opt/eclipse/plugins/org.eclipse.jface.text_3.7.2.v20111213-1208.jar
+7faa256b7000-7faa256c3000 r-xs 00081000 08:02 4331763                    /opt/eclipse/plugins/org.eclipse.ui.editors_3.7.0.v20110928-1504.jar
+7faa256d8000-7faa256db000 r-xs 00019000 08:02 4332094                    /opt/eclipse/plugins/org.eclipse.wst.common.frameworks_1.2.102.v201201190400.jar
+7faa256db000-7faa256e4000 r-xs 000fc000 08:02 4329848                    /opt/eclipse/plugins/org.jboss.ide.eclipse.as.core_2.3.1.v20120715-0243-H142-Final.jar
+7faa256e4000-7faa2573b000 r-xs 004b4000 08:02 4331710                    /opt/eclipse/plugins/org.eclipse.cdt.ui_5.3.2.201202111925.jar
+7faa2573b000-7faa25747000 r-xp 00000000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7faa25747000-7faa25847000 ---p 0000c000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7faa25847000-7faa25848000 rwxp 0000c000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7faa25848000-7faa2584b000 ---p 00000000 00:00 0 
+7faa2584b000-7faa25949000 rwxp 00000000 00:00 0 
+7faa2594b000-7faa25957000 r-xs 00076000 08:02 4329856                    /opt/eclipse/plugins/org.jboss.ide.eclipse.as.ui_2.3.1.v20120715-0243-H142-Final.jar
+7faa25957000-7faa2595d000 r-xs 00036000 08:02 10624378                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/931/1/.cp/jaxen-1.1-beta-6.jar
+7faa25965000-7faa25967000 r-xs 0000b000 08:02 4331775                    /opt/eclipse/plugins/org.eclipse.mylyn.monitor.ui_3.6.0.v20110608-1400.jar
+7faa25992000-7faa259a2000 r-xs 000db000 08:02 4331310                    /opt/eclipse/plugins/org.eclipse.ant.ui_3.5.101.v20120110-1739.jar
+7faa259a2000-7faa259a9000 r-xs 00094000 08:02 17436700                   /opt/jdk1.6.0_24/jre/lib/jsse.jar
+7faa259b5000-7faa259b8000 r-xs 00013000 08:02 17436698                   /opt/jdk1.6.0_24/jre/lib/jce.jar
+7faa259ba000-7faa259ec000 r-xs 00244000 08:02 4331549                    /opt/eclipse/plugins/org.eclipse.debug.ui_3.7.102.v20111129-1423_r372.jar
+7faa259ec000-7faa259ef000 rwxs 00000000 00:04 2686993                    /SYSV00000000 (deleted)
+7faa259ef000-7faa259f5000 r-xp 00000000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7faa259f5000-7faa25bf4000 ---p 00006000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7faa25bf4000-7faa25bf5000 r-xp 00005000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7faa25bf5000-7faa25bf6000 rwxp 00006000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7faa25bf9000-7faa25c00000 r-xs 00052000 08:02 4331309                    /opt/eclipse/plugins/org.eclipse.jdt.apt.core_3.3.500.v20110420-1015.jar
+7faa25c37000-7faa25c41000 r-xs 00058000 08:02 4329899                    /opt/eclipse/plugins/org.jboss.tools.jst.web.ui_3.3.1.v20120715-0241-H93-Final.jar
+7faa25c41000-7faa25c4a000 r-xs 0006f000 08:02 4329894                    /opt/eclipse/plugins/org.jboss.tools.jst.jsp_3.3.1.v20120715-0241-H93-Final.jar
+7faa25c4a000-7faa25c52000 r-xs 0004d000 08:02 4331708                    /opt/eclipse/plugins/org.eclipse.debug.core_3.7.1.v20111129-2031.jar
+7faa25c55000-7faa25c5f000 r-xs 00072000 08:02 4332061                    /opt/eclipse/plugins/org.eclipse.jst.jsp.ui_1.1.602.v201112071516.jar
+7faa25c5f000-7faa25c87000 r-xs 00214000 08:02 4331695                    /opt/eclipse/plugins/org.eclipse.ui.ide_3.7.0.v20110928-1505.jar
+7faa25c8c000-7faa25c92000 r-xs 0003f000 08:02 4332112                    /opt/eclipse/plugins/org.eclipse.wst.html.ui_1.0.602.v201202091936.jar
+7faa25c92000-7faa25c9b000 r-xs 00058000 08:02 4331726                    /opt/eclipse/plugins/org.eclipse.team.core_3.6.0.I20110525-0800.jar
+7faa25c9e000-7faa25ca4000 r-xs 00034000 08:02 4332108                    /opt/eclipse/plugins/org.eclipse.wst.dtd.ui_1.0.600.v201103171359.jar
+7faa25ca4000-7faa25ca7000 ---p 00000000 00:00 0 
+7faa25ca7000-7faa25da5000 rwxp 00000000 00:00 0 
+7faa25da7000-7faa25dad000 r-xs 0003f000 08:02 4332105                    /opt/eclipse/plugins/org.eclipse.wst.css.ui_1.0.601.v201201101544.jar
+7faa25dad000-7faa25db7000 r-xs 00058000 08:02 4331533                    /opt/eclipse/plugins/org.eclipse.mylyn.commons.ui_3.6.1.v20110720-0100.jar
+7faa25db7000-7faa25dbe000 r-xs 00038000 08:02 4331536                    /opt/eclipse/plugins/org.eclipse.mylyn.context.ui_3.6.1.v20120112-0100.jar
+7faa25dbe000-7faa25dc2000 r-xs 0001d000 08:02 4331548                    /opt/eclipse/plugins/org.eclipse.cdt.codan.core_2.0.0.201202111925.jar
+7faa25dc2000-7faa25dc7000 r-xs 00038000 08:02 4331543                    /opt/eclipse/plugins/org.eclipse.text_3.5.101.v20110928-1504.jar
+7faa25dca000-7faa25dcc000 r-xs 00009000 08:02 4331833                    /opt/eclipse/plugins/org.eclipse.cdt.codan.core.cxx_1.0.0.201202111925.jar
+7faa25dd0000-7faa25dd3000 r-xs 00019000 08:02 4331472                    /opt/eclipse/plugins/org.eclipse.mylyn.context.core_3.6.1.v20110720-0100.jar
+7faa25dd3000-7faa25df1000 r-xs 00151000 08:02 10624160                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/guava-10.0.1.jar
+7faa25df1000-7faa25df6000 r-xs 00025000 08:02 4329860                    /opt/eclipse/plugins/org.jboss.tools.common.el.core_3.3.1.v20120715-0209-H81-Final.jar
+7faa25df6000-7faa25df9000 ---p 00000000 00:00 0 
+7faa25df9000-7faa25ef7000 rwxp 00000000 00:00 0 
+7faa25ef7000-7faa25f02000 r-xp 00000000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7faa25f02000-7faa26002000 ---p 0000b000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7faa26002000-7faa26003000 rwxp 0000b000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7faa26005000-7faa2600a000 r-xs 00048000 08:02 10624377                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/931/1/.cp/dom4j-1.6.1.jar
+7faa2600a000-7faa2600d000 r-xs 00014000 08:02 4331721                    /opt/eclipse/plugins/org.eclipse.core.contenttype_3.4.100.v20110423-0524.jar
+7faa2600d000-7faa2600f000 r-xs 00007000 08:02 10623312                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/rule_api.jar
+7faa2600f000-7faa26015000 r-xs 00054000 08:02 10624243                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/sdklib.jar
+7faa26015000-7faa26017000 r-xp 00000000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7faa26017000-7faa26116000 ---p 00002000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7faa26116000-7faa26117000 rwxp 00001000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7faa26117000-7faa26123000 r-xs 000ba000 08:02 4331493                    /opt/eclipse/plugins/org.eclipse.core.resources_3.7.101.v20120125-1505.jar
+7faa26124000-7faa26126000 r-xs 00010000 08:02 4331771                    /opt/eclipse/plugins/org.eclipse.cdt.mylyn.ui_3.6.0.v20110608-1400.jar
+7faa26126000-7faa26128000 r-xs 00005000 08:02 10624230                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/httpmime-4.1.1.jar
+7faa26128000-7faa2612d000 r-xs 00028000 08:02 10624215                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/httpcore-4.1.jar
+7faa2612d000-7faa26135000 r-xs 0004e000 08:02 10624174                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/httpclient-4.1.1.jar
+7faa26135000-7faa26137000 r-xs 0000d000 08:02 10624061                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/commons-logging-1.1.1.jar
+7faa26139000-7faa2614b000 r-xs 000db000 08:02 4332165                    /opt/eclipse/plugins/org.eclipse.wst.xml.ui_1.1.202.v201112071516.jar
+7faa2614b000-7faa2614f000 r-xp 00000000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7faa2614f000-7faa2634f000 ---p 00004000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7faa2634f000-7faa26350000 r-xp 00004000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7faa26350000-7faa26351000 rwxp 00005000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7faa26351000-7faa26401000 r-xp 00000000 08:02 3279497                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+7faa26401000-7faa26403000 r-xp 00000000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7faa26403000-7faa26602000 ---p 00002000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7faa26602000-7faa26603000 r-xp 00001000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7faa26603000-7faa26604000 rwxp 00002000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7faa26604000-7faa26605000 r-xs 00000000 08:02 9175124                    /var/cache/fontconfig/c05880de57d1f5e948fdfacc138775d9-le64.cache-3
+7faa26605000-7faa2660e000 r-xs 00000000 08:02 9175121                    /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-3
+7faa2660e000-7faa26610000 r-xs 00000000 08:02 9175122                    /var/cache/fontconfig/99e8ed0e538f840c565b6ed5dad60d56-le64.cache-3
+7faa26610000-7faa26613000 r-xs 00000000 08:02 9186895                    /var/cache/fontconfig/e383d7ea5fbe662a33d9b44caf393297-le64.cache-3
+7faa26613000-7faa26617000 r-xs 00000000 08:02 9175108                    /var/cache/fontconfig/2cd17615ca594fa2959ae173292e504c-le64.cache-3
+7faa26617000-7faa26618000 r-xs 00000000 08:02 9175132                    /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-le64.cache-3
+7faa26618000-7faa2661d000 r-xs 00000000 08:02 9175118                    /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-le64.cache-3
+7faa2661d000-7faa2661e000 r-xs 00000000 08:02 9175112                    /var/cache/fontconfig/4c73fe0c47614734b17d736dbde7580a-le64.cache-3
+7faa2661e000-7faa2661f000 r-xs 00000000 08:02 9175105                    /var/cache/fontconfig/0d8c3b2ac0904cb8a57a757ad11a4a08-le64.cache-3
+7faa2661f000-7faa26620000 r-xs 00000000 08:02 9175116                    /var/cache/fontconfig/6a53c69dea097a2d716e069445527da8-le64.cache-3
+7faa26620000-7faa26626000 r-xs 00000000 08:02 9175123                    /var/cache/fontconfig/a755afe4a08bf5b97852ceb7400b47bc-le64.cache-3
+7faa26626000-7faa2662c000 r-xs 00000000 08:02 9175113                    /var/cache/fontconfig/515ca1ebc4b18308bea979be5704f9db-le64.cache-3
+7faa2662c000-7faa26635000 r-xs 00000000 08:02 9175117                    /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-le64.cache-3
+7faa26635000-7faa26645000 r-xs 00000000 08:02 9175106                    /var/cache/fontconfig/0f34bcd4b6ee430af32735b75db7f02b-le64.cache-3
+7faa26645000-7faa26673000 r-xs 00000000 08:02 9186874                    /var/cache/fontconfig/365b55f210c0a22e9a19e35191240f32-le64.cache-3
+7faa26673000-7faa26678000 r-xp 00000000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7faa26678000-7faa26877000 ---p 00005000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7faa26877000-7faa26878000 r-xp 00004000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7faa26878000-7faa26879000 rwxp 00005000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7faa26879000-7faa268ed000 r-xp 00000000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7faa268ed000-7faa269ec000 ---p 00074000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7faa269ec000-7faa269ef000 rwxp 00073000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7faa269ef000-7faa269f1000 rwxp 00000000 00:00 0 
+7faa269f1000-7faa26a6f000 r-xp 00000000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7faa26a6f000-7faa26b6e000 ---p 0007e000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7faa26b6e000-7faa26b75000 rwxp 0007d000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7faa26b75000-7faa26b78000 rwxp 00000000 00:00 0 
+7faa26b78000-7faa26bb4000 r-xs 00629000 08:02 4331825                    /opt/eclipse/plugins/com.ibm.icu_4.4.2.v20110823.jar
+7faa26bb4000-7faa26bb7000 ---p 00000000 00:00 0 
+7faa26bb7000-7faa26cb5000 rwxp 00000000 00:00 0 
+7faa26cb5000-7faa26cb8000 ---p 00000000 00:00 0 
+7faa26cb8000-7faa26db6000 rwxp 00000000 00:00 0 
+7faa26db6000-7faa26db9000 ---p 00000000 00:00 0 
+7faa26db9000-7faa26eb7000 rwxp 00000000 00:00 0 
+7faa26eb7000-7faa26eba000 ---p 00000000 00:00 0 
+7faa26eba000-7faa26fb8000 rwxp 00000000 00:00 0 
+7faa26fb8000-7faa26fbb000 ---p 00000000 00:00 0 
+7faa26fbb000-7faa270b9000 rwxp 00000000 00:00 0 
+7faa270b9000-7faa270bc000 ---p 00000000 00:00 0 
+7faa270bc000-7faa271ba000 rwxp 00000000 00:00 0 
+7faa271ba000-7faa271bd000 ---p 00000000 00:00 0 
+7faa271bd000-7faa272bb000 rwxp 00000000 00:00 0 
+7faa272bb000-7faa272c2000 r-xp 00000000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7faa272c2000-7faa273c1000 ---p 00007000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7faa273c1000-7faa273c3000 rwxp 00006000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7faa273c3000-7faa273d6000 r-xp 00000000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7faa273d6000-7faa274d7000 ---p 00013000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7faa274d7000-7faa274da000 rwxp 00014000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7faa274da000-7faa274dd000 r-xp 00000000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7faa274dd000-7faa276dd000 ---p 00003000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7faa276dd000-7faa276de000 r-xp 00003000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7faa276de000-7faa276df000 rwxp 00004000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7faa276df000-7faa2770a000 r-xp 00000000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7faa2770a000-7faa27909000 ---p 0002b000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7faa27909000-7faa2790a000 r-xp 0002a000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7faa2790a000-7faa2790b000 rwxp 0002b000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7faa2790b000-7faa27911000 r-xp 00000000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7faa27911000-7faa27b10000 ---p 00006000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7faa27b10000-7faa27b11000 r-xp 00005000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7faa27b11000-7faa27b12000 rwxp 00006000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7faa27b12000-7faa27b3d000 r-xp 00000000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7faa27b3d000-7faa27d3c000 ---p 0002b000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7faa27d3c000-7faa27d3d000 r-xp 0002a000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7faa27d3d000-7faa27d3e000 rwxp 0002b000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7faa27d3e000-7faa27d46000 r-xp 00000000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7faa27d46000-7faa27f46000 ---p 00008000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7faa27f46000-7faa27f47000 r-xp 00008000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7faa27f47000-7faa27f48000 rwxp 00009000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7faa27f48000-7faa27f58000 r-xp 00000000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7faa27f58000-7faa28157000 ---p 00010000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7faa28157000-7faa28158000 r-xp 0000f000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7faa28158000-7faa28159000 rwxp 00010000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7faa28159000-7faa28160000 r-xp 00000000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7faa28160000-7faa2835f000 ---p 00007000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7faa2835f000-7faa28360000 r-xp 00006000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7faa28360000-7faa28361000 rwxp 00007000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7faa28361000-7faa28370000 r-xp 00000000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7faa28370000-7faa2856f000 ---p 0000f000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7faa2856f000-7faa28570000 r-xp 0000e000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7faa28570000-7faa28571000 rwxp 0000f000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7faa28571000-7faa28575000 r-xp 00000000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7faa28575000-7faa28774000 ---p 00004000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7faa28774000-7faa28775000 r-xp 00003000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7faa28775000-7faa28776000 rwxp 00004000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7faa28776000-7faa2877b000 r-xp 00000000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7faa2877b000-7faa2897a000 ---p 00005000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7faa2897a000-7faa2897b000 r-xp 00004000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7faa2897b000-7faa2897c000 rwxp 00005000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7faa2897c000-7faa2899b000 r-xp 00000000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7faa2899b000-7faa28b9b000 ---p 0001f000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7faa28b9b000-7faa28b9d000 r-xp 0001f000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7faa28b9d000-7faa28b9e000 rwxp 00021000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7faa28b9e000-7faa28fd0000 r-xp 00000000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7faa28fd0000-7faa291cf000 ---p 00432000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7faa291cf000-7faa291d6000 r-xp 00431000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7faa291d6000-7faa291da000 rwxp 00438000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7faa291da000-7faa291dc000 rwxp 00000000 00:00 0 
+7faa291dc000-7faa291e1000 r-xp 00000000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7faa291e1000-7faa293e0000 ---p 00005000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7faa293e0000-7faa293e1000 r-xp 00004000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7faa293e1000-7faa293e2000 rwxp 00005000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7faa293e2000-7faa293e4000 r-xp 00000000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7faa293e4000-7faa295e3000 ---p 00002000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7faa295e3000-7faa295e4000 r-xp 00001000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7faa295e4000-7faa295e5000 rwxp 00002000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7faa295e5000-7faa29600000 r-xp 00000000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7faa29600000-7faa297ff000 ---p 0001b000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7faa297ff000-7faa29800000 r-xp 0001a000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7faa29800000-7faa29801000 rwxp 0001b000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7faa29801000-7faa29808000 r-xp 00000000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7faa29808000-7faa29a08000 ---p 00007000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7faa29a08000-7faa29a09000 r-xp 00007000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7faa29a09000-7faa29a0a000 rwxp 00008000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7faa29a0a000-7faa29a0c000 r-xp 00000000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7faa29a0c000-7faa29c0b000 ---p 00002000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7faa29c0b000-7faa29c0c000 r-xp 00001000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7faa29c0c000-7faa29c0d000 rwxp 00002000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7faa29c0d000-7faa29c33000 r-xp 00000000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7faa29c33000-7faa29e33000 ---p 00026000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7faa29e33000-7faa29e34000 r-xp 00026000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7faa29e34000-7faa29e35000 rwxp 00027000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7faa29e35000-7faa29ea3000 r-xp 00000000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7faa29ea3000-7faa2a0a3000 ---p 0006e000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7faa2a0a3000-7faa2a0a8000 r-xp 0006e000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7faa2a0a8000-7faa2a0a9000 rwxp 00073000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7faa2a0a9000-7faa2a0d0000 r-xp 00000000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7faa2a0d0000-7faa2a2d0000 ---p 00027000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7faa2a2d0000-7faa2a2d2000 r-xp 00027000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7faa2a2d2000-7faa2a2d3000 rwxp 00029000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7faa2a2d3000-7faa2a2ea000 r-xp 00000000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7faa2a2ea000-7faa2a4ea000 ---p 00017000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7faa2a4ea000-7faa2a4eb000 r-xp 00017000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7faa2a4eb000-7faa2a4ec000 rwxp 00018000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7faa2a4ec000-7faa2a4ee000 rwxp 00000000 00:00 0 
+7faa2a4ee000-7faa2a50a000 r-xp 00000000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7faa2a50a000-7faa2a709000 ---p 0001c000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7faa2a709000-7faa2a70a000 r-xp 0001b000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7faa2a70a000-7faa2a70b000 rwxp 0001c000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7faa2a70b000-7faa2a70c000 rwxp 00000000 00:00 0 
+7faa2a70c000-7faa2a723000 r-xp 00000000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7faa2a723000-7faa2a922000 ---p 00017000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7faa2a922000-7faa2a923000 r-xp 00016000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7faa2a923000-7faa2a924000 rwxp 00017000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7faa2a924000-7faa2a927000 r-xp 00000000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7faa2a927000-7faa2ab26000 ---p 00003000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7faa2ab26000-7faa2ab27000 r-xp 00002000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7faa2ab27000-7faa2ab28000 rwxp 00003000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7faa2ab28000-7faa2abba000 r-xp 00000000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7faa2abba000-7faa2adb9000 ---p 00092000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7faa2adb9000-7faa2adbf000 r-xp 00091000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7faa2adbf000-7faa2adc0000 rwxp 00097000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7faa2adc0000-7faa2adea000 r-xp 00000000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7faa2adea000-7faa2afe9000 ---p 0002a000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7faa2afe9000-7faa2afea000 r-xp 00029000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7faa2afea000-7faa2afeb000 rwxp 0002a000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7faa2afeb000-7faa2b11e000 r-xp 00000000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7faa2b11e000-7faa2b31e000 ---p 00133000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7faa2b31e000-7faa2b31f000 r-xp 00133000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7faa2b31f000-7faa2b323000 rwxp 00134000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7faa2b323000-7faa2b3dc000 r-xp 00000000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7faa2b3dc000-7faa2b5db000 ---p 000b9000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7faa2b5db000-7faa2b5dd000 r-xp 000b8000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7faa2b5dd000-7faa2b5de000 rwxp 000ba000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7faa2b5de000-7faa2b5e1000 rwxp 00000000 00:00 0 
+7faa2b5e1000-7faa2b5e6000 r-xp 00000000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7faa2b5e6000-7faa2b7e5000 ---p 00005000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7faa2b7e5000-7faa2b7e6000 r-xp 00004000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7faa2b7e6000-7faa2b7e7000 rwxp 00005000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7faa2b7e7000-7faa2b7e9000 r-xp 00000000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7faa2b7e9000-7faa2b9e8000 ---p 00002000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7faa2b9e8000-7faa2b9e9000 r-xp 00001000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7faa2b9e9000-7faa2b9ea000 rwxp 00002000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7faa2b9ea000-7faa2b9ec000 r-xp 00000000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7faa2b9ec000-7faa2bbeb000 ---p 00002000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7faa2bbeb000-7faa2bbec000 r-xp 00001000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7faa2bbec000-7faa2bbed000 rwxp 00002000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7faa2bbed000-7faa2bbf6000 r-xp 00000000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7faa2bbf6000-7faa2bdf5000 ---p 00009000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7faa2bdf5000-7faa2bdf6000 r-xp 00008000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7faa2bdf6000-7faa2bdf7000 rwxp 00009000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7faa2bdf7000-7faa2bdff000 r-xp 00000000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7faa2bdff000-7faa2bffe000 ---p 00008000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7faa2bffe000-7faa2bfff000 r-xp 00007000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7faa2bfff000-7faa2c000000 rwxp 00008000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7faa2c000000-7faa2f3f6000 rwxp 00000000 00:00 0 
+7faa2f3f6000-7faa30000000 ---p 00000000 00:00 0 
+7faa30000000-7faa30004000 r-xs 00020000 08:02 10624039                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/commons-compress-1.0.jar
+7faa30005000-7faa30009000 r-xs 00018000 08:02 4331734                    /opt/eclipse/plugins/org.eclipse.cdt.codan.ui_2.0.1.201202111925.jar
+7faa30009000-7faa3000c000 r-xs 00000000 08:02 9175129                    /var/cache/fontconfig/d60319d88cac85ba9e1a07bd06cfbb8c-le64.cache-3
+7faa3000c000-7faa3000d000 r-xs 00000000 08:02 9180773                    /var/cache/fontconfig/4794a0821666d79190d59a36cb4f44b5-le64.cache-3
+7faa3000d000-7faa3001d000 r-xs 00000000 08:02 9175128                    /var/cache/fontconfig/d52a8644073d54c13679302ca1180695-le64.cache-3
+7faa3001d000-7faa30025000 r-xs 00000000 08:02 9186840                    /var/cache/fontconfig/153bb866d4d26e7cd19eee2129f8d8d2-le64.cache-3
+7faa30025000-7faa30030000 r-xs 00000000 08:02 9175131                    /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-3
+7faa30030000-7faa30034000 r-xs 00000000 08:02 9186807                    /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-3
+7faa30035000-7faa30037000 r-xs 0000d000 08:02 10623940                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/commons-codec-1.4.jar
+7faa30037000-7faa3004f000 r-xs 00127000 08:02 4331791                    /opt/eclipse/plugins/org.apache.xerces_2.9.0.v201101211617.jar
+7faa3004f000-7faa30060000 r-xs 000d3000 08:02 10623277                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/freemarker-2.3.19.jar
+7faa30060000-7faa30066000 r-xs 00039000 08:02 4332186                    /opt/eclipse/plugins/org.eclipse.wst.xsl.ui_1.1.200.v201103082057.jar
+7faa30066000-7faa30068000 r-xs 00009000 08:02 10623909                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/common.jar
+7faa30068000-7faa3006b000 r-xs 00023000 08:02 4331312                    /opt/eclipse/plugins/org.eclipse.jdt.compiler.apt_1.0.400.v0110816-0800.jar
+7faa3006c000-7faa3006d000 r-xs 00000000 08:02 10623854                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/androidprefs.jar
+7faa3006d000-7faa3006e000 r-xs 00259000 08:02 4329921                    /opt/eclipse/plugins/com.android.ide.eclipse.base_20.0.1.v201207132230-403220.jar
+7faa3006f000-7faa30070000 r-xs 00004000 08:02 4331567                    /opt/eclipse/plugins/org.eclipse.cdt.core.linux.x86_64_5.2.0.201202111925.jar
+7faa30070000-7faa30071000 r-xs 00002000 08:02 4331783                    /opt/eclipse/plugins/org.eclipse.cdt.core.linux_5.2.0.201202111925.jar
+7faa30071000-7faa30073000 r-xs 00004000 08:02 10623549                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/asm-tree-4.0.jar
+7faa30073000-7faa30076000 r-xs 00032000 08:02 10623477                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lint_checks.jar
+7faa30076000-7faa3007a000 r-xs 0007f000 08:02 10623340                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/assetstudio.jar
+7faa3007b000-7faa3007d000 r-xs 00004000 08:02 4331827                    /opt/eclipse/plugins/org.eclipse.cdt.codan.ui.cxx_2.0.0.201202111925.jar
+7faa3007d000-7faa3007f000 r-xs 00011000 08:02 4331824                    /opt/eclipse/plugins/org.eclipse.equinox.util_1.0.300.v20110502.jar
+7faa30080000-7faa30083000 r-xs 00013000 08:02 4332168                    /opt/eclipse/plugins/org.eclipse.wst.xml.xpath.ui_1.1.100.v201105030025.jar
+7faa30083000-7faa30090000 r-xs 000af000 08:02 8000915                    /home/jaybeepee/android-sdk/android-sdk-linux/platform-tools/lib/dx.jar
+7faa30090000-7faa30092000 r-xs 00013000 08:02 10623308                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ide_common.jar
+7faa30092000-7faa30094000 r-xs 00006000 08:02 10623298                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/layoutlib_api.jar
+7faa30094000-7faa300a0000 r-xs 00083000 08:02 4331685                    /opt/eclipse/plugins/org.eclipse.ui.workbench.texteditor_3.7.0.v20110928-1504.jar
+7faa300a1000-7faa300a2000 r-xs 00003000 08:02 10624274                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/sdkstats.jar
+7faa300a2000-7faa300a4000 r-xs 00015000 08:02 10623456                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lint_api.jar
+7faa300a4000-7faa300a7000 r-xs 00019000 08:02 4331703                    /opt/eclipse/plugins/org.eclipse.core.filebuffers_3.5.200.v20110928-1504.jar
+7faa300a7000-7faa300bb000 r-xs 0013a000 08:02 4331531                    /opt/eclipse/plugins/org.eclipse.osgi_3.7.2.v20120110-1415.jar
+7faa300bb000-7faa3011b000 rwxs 00000000 00:04 2654223                    /SYSV00000000 (deleted)
+7faa3011b000-7faa3017e000 rwxp 00000000 00:00 0 
+7faa3017e000-7faa3018d000 r-xp 00000000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7faa3018d000-7faa3038c000 ---p 0000f000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7faa3038c000-7faa3038d000 r-xp 0000e000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7faa3038d000-7faa3038e000 rwxp 0000f000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7faa3038e000-7faa30390000 r-xp 00000000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7faa30390000-7faa3058f000 ---p 00002000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7faa3058f000-7faa30590000 r-xp 00001000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7faa30590000-7faa30591000 rwxp 00002000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7faa30591000-7faa3059a000 r-xp 00000000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7faa3059a000-7faa3079a000 ---p 00009000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7faa3079a000-7faa3079b000 r-xp 00009000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7faa3079b000-7faa3079c000 rwxp 0000a000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7faa3079c000-7faa307ae000 r-xp 00000000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7faa307ae000-7faa309ad000 ---p 00012000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7faa309ad000-7faa309ae000 r-xp 00011000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7faa309ae000-7faa309af000 rwxp 00012000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7faa309af000-7faa309e3000 r-xp 00000000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7faa309e3000-7faa30be3000 ---p 00034000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7faa30be3000-7faa30be4000 r-xp 00034000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7faa30be4000-7faa30be5000 rwxp 00035000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7faa30be5000-7faa30d20000 r-xp 00000000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7faa30d20000-7faa30f1f000 ---p 0013b000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7faa30f1f000-7faa30f23000 r-xp 0013a000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7faa30f23000-7faa30f25000 rwxp 0013e000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7faa30f25000-7faa30f27000 rwxp 00000000 00:00 0 
+7faa30f27000-7faa30f45000 r-xp 00000000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7faa30f45000-7faa31144000 ---p 0001e000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7faa31144000-7faa31145000 r-xp 0001d000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7faa31145000-7faa31146000 rwxp 0001e000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7faa31146000-7faa3118d000 r-xp 00000000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7faa3118d000-7faa3138d000 ---p 00047000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7faa3138d000-7faa3138f000 r-xp 00047000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7faa3138f000-7faa31390000 rwxp 00049000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7faa31390000-7faa3139b000 r-xp 00000000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7faa3139b000-7faa3159b000 ---p 0000b000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7faa3159b000-7faa3159c000 r-xp 0000b000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7faa3159c000-7faa3159d000 rwxp 0000c000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7faa3159d000-7faa3164a000 r-xp 00000000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7faa3164a000-7faa3184a000 ---p 000ad000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7faa3184a000-7faa3184e000 r-xp 000ad000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7faa3184e000-7faa31850000 rwxp 000b1000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7faa31850000-7faa3188b000 r-xp 00000000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7faa3188b000-7faa31a8a000 ---p 0003b000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7faa31a8a000-7faa31a8b000 r-xp 0003a000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7faa31a8b000-7faa31a8c000 rwxp 0003b000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7faa31a8c000-7faa31a93000 r-xp 00000000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7faa31a93000-7faa31c92000 ---p 00007000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7faa31c92000-7faa31c93000 r-xp 00006000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7faa31c93000-7faa31c94000 rwxp 00007000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7faa31c94000-7faa31c98000 r-xp 00000000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7faa31c98000-7faa31e97000 ---p 00004000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7faa31e97000-7faa31e98000 r-xp 00003000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7faa31e98000-7faa31e99000 rwxp 00004000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7faa31e99000-7faa31f8d000 r-xp 00000000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7faa31f8d000-7faa3218c000 ---p 000f4000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7faa3218c000-7faa3218d000 r-xp 000f3000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7faa3218d000-7faa3218e000 rwxp 000f4000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7faa3218e000-7faa3218f000 rwxp 00000000 00:00 0 
+7faa3218f000-7faa321dd000 r-xp 00000000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7faa321dd000-7faa323dd000 ---p 0004e000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7faa323dd000-7faa323de000 r-xp 0004e000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7faa323de000-7faa323df000 rwxp 0004f000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7faa323df000-7faa323e0000 rwxp 00000000 00:00 0 
+7faa323e0000-7faa323e1000 r-xs 00005000 08:02 10623701                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/manifmerger.jar
+7faa323e1000-7faa323e3000 r-xs 0000a000 08:02 10623501                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/asm-4.0.jar
+7faa323e3000-7faa323e5000 r-xs 0000f000 08:02 4329868                    /opt/eclipse/plugins/org.jboss.tools.common.validation_3.3.1.v20120715-0209-H81-Final.jar
+7faa323e5000-7faa323e7000 r-xs 00006000 08:02 4331392                    /opt/eclipse/plugins/org.eclipse.cdt.codan.checkers.ui_1.0.0.201202111925.jar
+7faa323e7000-7faa323e8000 r-xs 00001000 08:02 10623602                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/swtmenubar.jar
+7faa323e8000-7faa323eb000 r-xs 00014000 08:02 4331379                    /opt/eclipse/plugins/org.eclipse.core.jobs_3.5.101.v20120113-1953.jar
+7faa323eb000-7faa32406000 r-xs 00000000 08:02 2622928                    /usr/share/mime/mime.cache
+7faa32406000-7faa32415000 r-xp 00000000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7faa32415000-7faa32514000 ---p 0000f000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7faa32514000-7faa32516000 rwxp 0000e000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7faa32516000-7faa32517000 r-xs 0000b000 08:02 4331532                    /opt/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
+7faa32517000-7faa32518000 ---p 00000000 00:00 0 
+7faa32518000-7faa32618000 rwxp 00000000 00:00 0 
+7faa32618000-7faa3261b000 ---p 00000000 00:00 0 
+7faa3261b000-7faa32719000 rwxp 00000000 00:00 0 
+7faa32719000-7faa3271c000 ---p 00000000 00:00 0 
+7faa3271c000-7faa3281a000 rwxp 00000000 00:00 0 
+7faa3281a000-7faa3281d000 ---p 00000000 00:00 0 
+7faa3281d000-7faa3291b000 rwxp 00000000 00:00 0 
+7faa3291b000-7faa3291e000 ---p 00000000 00:00 0 
+7faa3291e000-7faa32a1c000 rwxp 00000000 00:00 0 
+7faa32a1c000-7faa33100000 r-xp 00000000 08:02 2104481                    /usr/lib/locale/locale-archive
+7faa33100000-7faa33103000 ---p 00000000 00:00 0 
+7faa33103000-7faa33201000 rwxp 00000000 00:00 0 
+7faa33201000-7faa33204000 ---p 00000000 00:00 0 
+7faa33204000-7faa33302000 rwxp 00000000 00:00 0 
+7faa33302000-7faa33303000 ---p 00000000 00:00 0 
+7faa33303000-7faa33d40000 rwxp 00000000 00:00 0 
+7faa33d40000-7faa33ed8000 r-xs 03027000 08:02 17436761                   /opt/jdk1.6.0_24/jre/lib/rt.jar
+7faa33ed8000-7faa33ed9000 ---p 00000000 00:00 0 
+7faa33ed9000-7faa33fd9000 rwxp 00000000 00:00 0 
+7faa33fd9000-7faa33fda000 ---p 00000000 00:00 0 
+7faa33fda000-7faa340da000 rwxp 00000000 00:00 0 
+7faa340da000-7faa340db000 ---p 00000000 00:00 0 
+7faa340db000-7faa341db000 rwxp 00000000 00:00 0 
+7faa341db000-7faa341dc000 ---p 00000000 00:00 0 
+7faa341dc000-7faa342dc000 rwxp 00000000 00:00 0 
+7faa342dc000-7faa342dd000 ---p 00000000 00:00 0 
+7faa342dd000-7faa343dd000 rwxp 00000000 00:00 0 
+7faa343dd000-7faa343de000 ---p 00000000 00:00 0 
+7faa343de000-7faa344de000 rwxp 00000000 00:00 0 
+7faa344de000-7faa344df000 ---p 00000000 00:00 0 
+7faa344df000-7faa345df000 rwxp 00000000 00:00 0 
+7faa345df000-7faa345e0000 ---p 00000000 00:00 0 
+7faa345e0000-7faa3471a000 rwxp 00000000 00:00 0 
+7faa3471a000-7faa34760000 rwxp 00000000 00:00 0 
+7faa34760000-7faa348b6000 rwxp 00000000 00:00 0 
+7faa348b6000-7faa34a0b000 rwxp 00000000 00:00 0 
+7faa34a0b000-7faa34a45000 rwxp 00000000 00:00 0 
+7faa34a45000-7faa34a8b000 rwxp 00000000 00:00 0 
+7faa34a8b000-7faa34be1000 rwxp 00000000 00:00 0 
+7faa34be1000-7faa34d35000 rwxp 00000000 00:00 0 
+7faa34d35000-7faa34e8b000 rwxp 00000000 00:00 0 
+7faa34e8b000-7faa35aac000 rwxp 00000000 00:00 0 
+7faa35aac000-7faa37e8c000 rwxp 00000000 00:00 0 
+7faa37e8c000-7faa37e9a000 r-xp 00000000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7faa37e9a000-7faa37f9c000 ---p 0000e000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7faa37f9c000-7faa37f9f000 rwxp 00010000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7faa37f9f000-7faa37fa0000 rwxp 00000000 00:00 0 
+7faa37fa0000-7faa37fac000 r-xp 00000000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7faa37fac000-7faa381ab000 ---p 0000c000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7faa381ab000-7faa381ac000 r-xp 0000b000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7faa381ac000-7faa381ad000 rwxp 0000c000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7faa381ad000-7faa381b7000 r-xp 00000000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7faa381b7000-7faa383b7000 ---p 0000a000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7faa383b7000-7faa383b8000 r-xp 0000a000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7faa383b8000-7faa383b9000 rwxp 0000b000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7faa383b9000-7faa383c1000 r-xp 00000000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7faa383c1000-7faa385c0000 ---p 00008000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7faa385c0000-7faa385c1000 r-xp 00007000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7faa385c1000-7faa385c2000 rwxp 00008000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7faa385c2000-7faa385c9000 r-xp 00000000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7faa385c9000-7faa386ca000 ---p 00007000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7faa386ca000-7faa386cc000 rwxp 00008000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7faa386cc000-7faa386cd000 rwxp 00000000 00:00 0 
+7faa386cd000-7faa386e4000 r-xp 00000000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7faa386e4000-7faa388e3000 ---p 00017000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7faa388e3000-7faa388e4000 r-xp 00016000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7faa388e4000-7faa388e5000 rwxp 00017000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7faa388e5000-7faa388e7000 rwxp 00000000 00:00 0 
+7faa388e7000-7faa38910000 r-xp 00000000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7faa38910000-7faa38a0f000 ---p 00029000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7faa38a0f000-7faa38a16000 rwxp 00028000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7faa38a16000-7faa38a23000 r-xp 00000000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7faa38a23000-7faa38b22000 ---p 0000d000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7faa38b22000-7faa38b25000 rwxp 0000c000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7faa38b25000-7faa38b2c000 r-xp 00000000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7faa38b2c000-7faa38d2b000 ---p 00007000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7faa38d2b000-7faa38d2c000 r-xp 00006000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7faa38d2c000-7faa38d2d000 rwxp 00007000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7faa38d2d000-7faa38d30000 ---p 00000000 00:00 0 
+7faa38d30000-7faa38e2e000 rwxp 00000000 00:00 0 
+7faa38e2e000-7faa38eb1000 r-xp 00000000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7faa38eb1000-7faa390b0000 ---p 00083000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7faa390b0000-7faa390b1000 r-xp 00082000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7faa390b1000-7faa390b2000 rwxp 00083000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7faa390b2000-7faa398f0000 r-xp 00000000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7faa398f0000-7faa399ef000 ---p 0083e000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7faa399ef000-7faa39b83000 rwxp 0083d000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7faa39b83000-7faa39bbc000 rwxp 00000000 00:00 0 
+7faa39bbc000-7faa39d55000 r-xp 00000000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7faa39d55000-7faa39f54000 ---p 00199000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7faa39f54000-7faa39f58000 r-xp 00198000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7faa39f58000-7faa39f59000 rwxp 0019c000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7faa39f59000-7faa39f5f000 rwxp 00000000 00:00 0 
+7faa39f5f000-7faa39f61000 r-xp 00000000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7faa39f61000-7faa3a161000 ---p 00002000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7faa3a161000-7faa3a162000 r-xp 00002000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7faa3a162000-7faa3a163000 rwxp 00003000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7faa3a163000-7faa3a17b000 r-xp 00000000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7faa3a17b000-7faa3a37a000 ---p 00018000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7faa3a37a000-7faa3a37b000 r-xp 00017000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7faa3a37b000-7faa3a37c000 rwxp 00018000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7faa3a37c000-7faa3a380000 rwxp 00000000 00:00 0 
+7faa3a380000-7faa3a3a1000 r-xp 00000000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7faa3a3a1000-7faa3a3aa000 r-xs 00052000 08:02 10623249                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/sdkuilib.jar
+7faa3a3aa000-7faa3a3db000 rwxp 00000000 00:00 0 
+7faa3a3db000-7faa3a46a000 rwxp 00000000 00:00 0 
+7faa3a46a000-7faa3a46d000 rwxp 00000000 00:00 0 
+7faa3a46d000-7faa3a474000 r-xp 00000000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7faa3a474000-7faa3a575000 ---p 00007000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7faa3a575000-7faa3a577000 rwxp 00008000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7faa3a577000-7faa3a578000 rwxp 00000000 00:00 0 
+7faa3a578000-7faa3a57b000 r-xs 0001f000 08:02 4329859                    /opt/eclipse/plugins/org.jboss.tools.common_3.3.1.v20120715-0209-H81-Final.jar
+7faa3a57b000-7faa3a57f000 r-xs 00013000 08:02 4331794                    /opt/eclipse/plugins/org.eclipse.ui.views_3.6.0.v20110928-1505.jar
+7faa3a57f000-7faa3a583000 r-xs 00029000 08:02 4331725                    /opt/eclipse/plugins/org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar
+7faa3a583000-7faa3a584000 r-xs 0000a000 08:02 10623266                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/kxml2-2.3.0.jar
+7faa3a584000-7faa3a585000 r-xs 00002000 08:02 10623256                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ninepatch.jar
+7faa3a585000-7faa3a586000 r-xs 00002000 08:02 10623575                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ant-glob.jar
+7faa3a586000-7faa3a588000 r-xs 00001000 08:02 4331479                    /opt/eclipse/plugins/org.eclipse.ui.workbench.compatibility_3.2.100.I20110413-1600/compatibility.jar
+7faa3a588000-7faa3a589000 r-xs 00003000 08:02 10624379                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/931/1/.cp/getopt.jar
+7faa3a589000-7faa3a58b000 r-xs 00008000 08:02 4331594                    /opt/eclipse/plugins/org.eclipse.mylyn.monitor.core_3.6.0.v20110608-1400.jar
+7faa3a58b000-7faa3a58e000 r-xs 00010000 08:02 4329895                    /opt/eclipse/plugins/org.jboss.tools.jst.text.ext_3.3.1.v20120715-0241-H93-Final.jar
+7faa3a58e000-7faa3a590000 r-xs 00018000 08:02 4331826                    /opt/eclipse/plugins/org.eclipse.equinox.common_3.6.0.v20110523.jar
+7faa3a590000-7faa3a591000 r-xs 00004000 08:02 4331525                    /opt/eclipse/plugins/org.eclipse.swt_3.7.2.v3740f.jar
+7faa3a591000-7faa3a592000 r-xs 0000d000 08:02 4331314                    /opt/eclipse/plugins/org.eclipse.jdt.compiler.tool_1.0.100.v_B79_R37x.jar
+7faa3a592000-7faa3a593000 r-xs 00000000 08:02 3151433                    /home/jaybeepee/.local/share/mime/mime.cache
+7faa3a593000-7faa3a594000 r-xs 00002000 08:02 4331802                    /opt/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry_3.5.0.v20110505/runtime_registry_compatibility.jar
+7faa3a594000-7faa3a59c000 rwxs 00000000 08:02 22023122                   /tmp/hsperfdata_jaybeepee/18814
+7faa3a59c000-7faa3a59d000 rwxp 00000000 00:00 0 
+7faa3a59d000-7faa3a59e000 ---p 00000000 00:00 0 
+7faa3a59e000-7faa3a5a0000 rwxp 00000000 00:00 0 
+7faa3a5a0000-7faa3a5a1000 r-xp 00020000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7faa3a5a1000-7faa3a5a3000 rwxp 00021000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7fff8a1bb000-7fff8a1dc000 rwxp 00000000 00:00 0                          [stack]
+7fff8a1ff000-7fff8a200000 r-xp 00000000 00:00 0                          [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
+
+VM Arguments:
+jvm_args: -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms1024m -Xmx2048m 
+java_command: /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /opt/eclipse/eclipse -name Eclipse --launcher.library /opt/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so -startup /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.overrideVmargs -exitdata 28000e -product org.eclipse.epp.package.cpp.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms1024m -Xmx2048m -jar /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+PATH=/home/jaybeepee/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/glassfish-3.1.2/bin:/opt/jdk1.6.0_24/bin/:/opt/glassfish-3.1.2/bin:/opt/jdk1.6.0_24/bin/:/opt/dex2jar-0.0.9.11/
+USERNAME=jaybeepee
+LD_LIBRARY_PATH=/opt/jdk1.6.0_24/jre/lib/amd64/server:/opt/jdk1.6.0_24/jre/lib/amd64:/opt/jdk1.6.0_24/jre/../lib/amd64
+SHELL=/bin/bash
+DISPLAY=:0
+
+Signal Handlers:
+SIGSEGV: [libjvm.so+0x791b30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGBUS: [libjvm.so+0x791b30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGFPE: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGPIPE: SIG_IGN, sa_mask[0]=0x00001000, sa_flags=0x10000000
+SIGXFSZ: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGILL: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
+SIGUSR2: [libjvm.so+0x643780], sa_mask[0]=0x00000000, sa_flags=0x10000004
+SIGHUP: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGINT: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGTERM: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGQUIT: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+
+
+---------------  S Y S T E M  ---------------
+
+OS:wheezy/sid
+
+uname:Linux 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64
+libc:glibc 2.13 NPTL 2.13 
+rlimit: STACK 8192k, CORE 0k, NPROC 63508, NOFILE 4096, AS infinity
+load average:1.98 0.98 0.49
+
+/proc/meminfo:
+MemTotal:        8144924 kB
+MemFree:          640356 kB
+Buffers:         1000296 kB
+Cached:          2835212 kB
+SwapCached:            0 kB
+Active:          3772988 kB
+Inactive:        2860640 kB
+Active(anon):    2800288 kB
+Inactive(anon):    13832 kB
+Active(file):     972700 kB
+Inactive(file):  2846808 kB
+Unevictable:          72 kB
+Mlocked:              72 kB
+SwapTotal:       7811068 kB
+SwapFree:        7811068 kB
+Dirty:             16064 kB
+Writeback:             0 kB
+AnonPages:       2799012 kB
+Mapped:           233180 kB
+Shmem:             15840 kB
+Slab:             642872 kB
+SReclaimable:     607640 kB
+SUnreclaim:        35232 kB
+KernelStack:        4128 kB
+PageTables:        32736 kB
+NFS_Unstable:          0 kB
+Bounce:                0 kB
+WritebackTmp:          0 kB
+CommitLimit:    11883528 kB
+Committed_AS:    5668924 kB
+VmallocTotal:   34359738367 kB
+VmallocUsed:      350036 kB
+VmallocChunk:   34359363068 kB
+HardwareCorrupted:     0 kB
+AnonHugePages:         0 kB
+HugePages_Total:       0
+HugePages_Free:        0
+HugePages_Rsvd:        0
+HugePages_Surp:        0
+Hugepagesize:       2048 kB
+DirectMap4k:      163840 kB
+DirectMap2M:     8183808 kB
+
+
+CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht
+
+Memory: 4k page, physical 8144924k(640356k free), swap 7811068k(7811068k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (19.1-b02) for linux-amd64 JRE (1.6.0_24-b07), built on Feb  2 2011 16:55:54 by "java_re" with gcc 3.2.2 (SuSE Linux)
+
+time: Mon Nov 12 13:44:08 2012
+elapsed time: 53 seconds
+

+ 842 - 0
modules/usrloc_scscf/hs_err_pid18897.log

@@ -0,0 +1,842 @@
+#
+# A fatal error has been detected by the Java Runtime Environment:
+#
+#  SIGSEGV (0xb) at pc=0x00007f89f493b658, pid=18897, tid=140230225266432
+#
+# JRE version: 6.0_24-b07
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode linux-amd64 compressed oops)
+# Problematic frame:
+# v  ~BufferBlob::vtable chunks
+#
+# If you would like to submit a bug report, please visit:
+#   http://java.sun.com/webapps/bugreport/crash.jsp
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00007f89ece04000):  JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_in_Java, id=18939, stack(0x00007f89e4b38000,0x00007f89e4c39000)]
+
+siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000002680128
+
+Registers:
+RAX=0x0000000772620c80, RBX=0x00000007e20a9d80, RCX=0x0000000000000000, RDX=0x00000007e20a9ca0
+RSP=0x00007f89e4c36cb8, RBP=0x0000000000000001, RSI=0x0000000002680120, RDI=0x00000007774986f8
+R8 =0x0000000000000000, R9 =0x00000000fc2205cb, R10=0x00000007e20a9ca0, R11=0x00000000004d0024
+R12=0x0000000000000000, R13=0x00007f89f51915d0, R14=0x00007f89e4c36d50, R15=0x00007f89ece04000
+RIP=0x00007f89f493b658, EFL=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
+  TRAPNO=0x000000000000000e
+
+Register to memory mapping:
+
+RAX=0x0000000772620c80
+{instance class} 
+ - klass: {other class}
+
+RBX=0x00000007e20a9d80
+
+[error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xe0000000]
+
+Stack: [0x00007f89e4b38000,0x00007f89e4c39000],  sp=0x00007f89e4c36cb8,  free space=1019k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+v  ~BufferBlob::vtable chunks
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x00007f89d85dd000 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_blocked, id=18990, stack(0x00007f89de950000,0x00007f89dea51000)]
+  0x0000000040f3d000 JavaThread "[ThreadPool Manager] - Idle Thread" daemon [_thread_blocked, id=18979, stack(0x00007f89dee55000,0x00007f89def56000)]
+  0x00007f89da13a000 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=18978, stack(0x00007f89ded54000,0x00007f89dee55000)]
+  0x000000004111c800 JavaThread "Worker-23" [_thread_blocked, id=18963, stack(0x00007f89df1f2000,0x00007f89df2f3000)]
+  0x0000000041724800 JavaThread "Worker-22" [_thread_blocked, id=18962, stack(0x00007f89df2f3000,0x00007f89df3f4000)]
+  0x0000000041bb9000 JavaThread "Worker-21" [_thread_blocked, id=18961, stack(0x00007f89df3f4000,0x00007f89df4f5000)]
+  0x0000000041bb4000 JavaThread "Worker-20" [_thread_blocked, id=18960, stack(0x00007f89df4f5000,0x00007f89df5f6000)]
+  0x0000000040ba9000 JavaThread "Worker-19" [_thread_blocked, id=18959, stack(0x00007f89df5f6000,0x00007f89df6f7000)]
+  0x0000000040be3800 JavaThread "Worker-18" [_thread_blocked, id=18958, stack(0x00007f89df6f7000,0x00007f89df7f8000)]
+  0x0000000040be1800 JavaThread "Worker-17" [_thread_blocked, id=18957, stack(0x00007f89df7f8000,0x00007f89df8f9000)]
+  0x00000000412e8000 JavaThread "Worker-16" [_thread_blocked, id=18956, stack(0x00007f89df8f9000,0x00007f89df9fa000)]
+  0x00000000412e5800 JavaThread "Worker-15" [_thread_blocked, id=18955, stack(0x00007f89df9fa000,0x00007f89dfafb000)]
+  0x00007f89e005a000 JavaThread "Worker-14" [_thread_blocked, id=18954, stack(0x00007f89dfafb000,0x00007f89dfbfc000)]
+  0x0000000041802800 JavaThread "Worker-13" [_thread_blocked, id=18953, stack(0x00007f89dfbfc000,0x00007f89dfcfd000)]
+  0x0000000041800800 JavaThread "Worker-12" [_thread_blocked, id=18952, stack(0x00007f89dfcfd000,0x00007f89dfdfe000)]
+  0x00000000418cc000 JavaThread "Worker-11" [_thread_blocked, id=18951, stack(0x00007f89dfdfe000,0x00007f89dfeff000)]
+  0x000000004101e800 JavaThread "Worker-10" [_thread_blocked, id=18950, stack(0x00007f89dfeff000,0x00007f89e0000000)]
+  0x00000000413af800 JavaThread "Worker-9" [_thread_blocked, id=18949, stack(0x00007f89e4020000,0x00007f89e4121000)]
+  0x000000004199d000 JavaThread "Worker-8" [_thread_blocked, id=18948, stack(0x00007f89e4121000,0x00007f89e4222000)]
+  0x0000000041cd4000 JavaThread "Worker-7" [_thread_blocked, id=18947, stack(0x00007f89e4222000,0x00007f89e4323000)]
+  0x0000000040e6b000 JavaThread "Worker-6" [_thread_blocked, id=18946, stack(0x00007f89e4323000,0x00007f89e4424000)]
+  0x0000000040fd2000 JavaThread "Worker-5" [_thread_blocked, id=18945, stack(0x00007f89e4424000,0x00007f89e4525000)]
+  0x000000004185e800 JavaThread "Worker-4" [_thread_blocked, id=18944, stack(0x00007f89e4525000,0x00007f89e4626000)]
+  0x0000000040d98800 JavaThread "Worker-3" [_thread_blocked, id=18943, stack(0x00007f89e562b000,0x00007f89e572c000)]
+  0x00000000412e9800 JavaThread "Worker-2" [_thread_blocked, id=18942, stack(0x00007f89e5833000,0x00007f89e5934000)]
+  0x00007f89ece08000 JavaThread "Java indexing" daemon [_thread_blocked, id=18941, stack(0x00007f89e4c39000,0x00007f89e4d3a000)]
+  0x00007f89ece2b800 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=18940, stack(0x00007f89e4a2f000,0x00007f89e4b30000)]
+=>0x00007f89ece04000 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_in_Java, id=18939, stack(0x00007f89e4b38000,0x00007f89e4c39000)]
+  0x0000000040f5a800 JavaThread "Worker-1" [_thread_blocked, id=18924, stack(0x00007f89e572f000,0x00007f89e5830000)]
+  0x0000000040b25000 JavaThread "Worker-0" [_thread_blocked, id=18922, stack(0x00007f89e6798000,0x00007f89e6899000)]
+  0x00007f89ec377000 JavaThread "Worker-JM" [_thread_blocked, id=18921, stack(0x00007f89e6596000,0x00007f89e6697000)]
+  0x0000000041098800 JavaThread "[Timer] - Main Queue Handler" daemon [_thread_blocked, id=18920, stack(0x00007f89e6697000,0x00007f89e6798000)]
+  0x00000000417d6000 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=18918, stack(0x00007f89e6899000,0x00007f89e699a000)]
+  0x0000000040bb3000 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=18917, stack(0x00007f89e699a000,0x00007f89e6a9b000)]
+  0x0000000040c0c000 JavaThread "State Data Manager" daemon [_thread_blocked, id=18916, stack(0x00007f89e6a9b000,0x00007f89e6b9c000)]
+  0x0000000040eb8800 JavaThread "Framework Active Thread" [_thread_blocked, id=18915, stack(0x00007f89e6b9c000,0x00007f89e6c9d000)]
+  0x00007f89ec097800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=18913, stack(0x00007f89f2053000,0x00007f89f2154000)]
+  0x00007f89ec095000 JavaThread "CompilerThread1" daemon [_thread_in_native, id=18912, stack(0x00007f89f2154000,0x00007f89f2255000)]
+  0x00007f89ec092000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=18911, stack(0x00007f89f2255000,0x00007f89f2356000)]
+  0x00007f89ec090000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=18910, stack(0x00007f89f2356000,0x00007f89f2457000)]
+  0x00007f89ec073800 JavaThread "Finalizer" daemon [_thread_blocked, id=18909, stack(0x00007f89f2b3b000,0x00007f89f2c3c000)]
+  0x00007f89ec071800 JavaThread "Reference Handler" daemon [_thread_blocked, id=18908, stack(0x00007f89f2c3c000,0x00007f89f2d3d000)]
+  0x0000000040a5b000 JavaThread "main" [_thread_in_native, id=18898, stack(0x00007f89f8768000,0x00007f89f8869000)]
+
+Other Threads:
+  0x00007f89ec06b000 VMThread [stack: 0x00007f89f2d3d000,0x00007f89f2e3e000] [id=18907]
+  0x00007f89ec0a2000 WatcherThread [stack: 0x00007f89f1f52000,0x00007f89f2053000] [id=18914]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap
+ PSYoungGen      total 568064K, used 254849K [0x00000007d5560000, 0x0000000800000000, 0x0000000800000000)
+  eden space 524416K, 40% used [0x00000007d5560000,0x00000007e23a2678,0x00000007f5580000)
+  from space 43648K, 99% used [0x00000007f5580000,0x00000007f801e0e0,0x00000007f8020000)
+  to   space 114944K, 0% used [0x00000007f8fc0000,0x00000007f8fc0000,0x0000000800000000)
+ PSOldGen        total 699072K, used 135128K [0x0000000780000000, 0x00000007aaab0000, 0x00000007d5560000)
+  object space 699072K, 19% used [0x0000000780000000,0x00000007883f6278,0x00000007aaab0000)
+ PSPermGen       total 124736K, used 124595K [0x0000000770000000, 0x00000007779d0000, 0x0000000780000000)
+  object space 124736K, 99% used [0x0000000770000000,0x00000007779acdf8,0x00000007779d0000)
+
+Dynamic libraries:
+40000000-40009000 r-xp 00000000 08:02 17432867                           /opt/jdk1.6.0_24/bin/java
+40108000-4010a000 rwxp 00008000 08:02 17432867                           /opt/jdk1.6.0_24/bin/java
+40a52000-42ff9000 rwxp 00000000 00:00 0                                  [heap]
+770000000-7779d0000 rwxp 00000000 00:00 0 
+7779d0000-780000000 rwxp 00000000 00:00 0 
+780000000-7aaab0000 rwxp 00000000 00:00 0 
+7aaab0000-7d5560000 rwxp 00000000 00:00 0 
+7d5560000-800000000 rwxp 00000000 00:00 0 
+7f89d0000000-7f89d040f000 rwxp 00000000 00:00 0 
+7f89d040f000-7f89d4000000 ---p 00000000 00:00 0 
+7f89d469f000-7f89d8000000 r-xp 00000000 08:02 3806958                    /usr/share/icons/gnome/icon-theme.cache
+7f89d8000000-7f89dbffd000 rwxp 00000000 00:00 0 
+7f89dbffd000-7f89dc000000 ---p 00000000 00:00 0 
+7f89dca5c000-7f89dcad5000 r-xp 00000000 08:02 17436486                   /opt/jdk1.6.0_24/jre/lib/amd64/libfontmanager.so
+7f89dcad5000-7f89dcbd4000 ---p 00079000 08:02 17436486                   /opt/jdk1.6.0_24/jre/lib/amd64/libfontmanager.so
+7f89dcbd4000-7f89dcbe9000 rwxp 00078000 08:02 17436486                   /opt/jdk1.6.0_24/jre/lib/amd64/libfontmanager.so
+7f89dcbe9000-7f89dcbfa000 rwxp 00000000 00:00 0 
+7f89dcbfa000-7f89dcc3c000 r-xp 00000000 08:02 17436526                   /opt/jdk1.6.0_24/jre/lib/amd64/xawt/libmawt.so
+7f89dcc3c000-7f89dcd3b000 ---p 00042000 08:02 17436526                   /opt/jdk1.6.0_24/jre/lib/amd64/xawt/libmawt.so
+7f89dcd3b000-7f89dcd47000 rwxp 00041000 08:02 17436526                   /opt/jdk1.6.0_24/jre/lib/amd64/xawt/libmawt.so
+7f89dcd47000-7f89dcd48000 rwxp 00000000 00:00 0 
+7f89dcd48000-7f89dcdda000 r-xp 00000000 08:02 17436481                   /opt/jdk1.6.0_24/jre/lib/amd64/libawt.so
+7f89dcdda000-7f89dced9000 ---p 00092000 08:02 17436481                   /opt/jdk1.6.0_24/jre/lib/amd64/libawt.so
+7f89dced9000-7f89dcef2000 rwxp 00091000 08:02 17436481                   /opt/jdk1.6.0_24/jre/lib/amd64/libawt.so
+7f89dcef2000-7f89dcf17000 rwxp 00000000 00:00 0 
+7f89dcf17000-7f89dcf24000 r-xp 00000000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f89dcf24000-7f89dd123000 ---p 0000d000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f89dd123000-7f89dd124000 r-xp 0000c000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f89dd124000-7f89dd125000 rwxp 0000d000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f89dd125000-7f89dd167000 r-xp 00000000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f89dd167000-7f89dd367000 ---p 00042000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f89dd367000-7f89dd368000 r-xp 00042000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f89dd368000-7f89dd369000 rwxp 00043000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f89dd369000-7f89dd37f000 r-xp 00000000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f89dd37f000-7f89dd57e000 ---p 00016000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f89dd57e000-7f89dd57f000 r-xp 00015000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f89dd57f000-7f89dd580000 rwxp 00016000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f89dd580000-7f89dd5a9000 r-xp 00000000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f89dd5a9000-7f89dd7a9000 ---p 00029000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f89dd7a9000-7f89dd7aa000 r-xp 00029000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f89dd7aa000-7f89dd7ab000 rwxp 0002a000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f89dd7ab000-7f89dd7ac000 rwxp 00000000 00:00 0 
+7f89dd7ac000-7f89de68d000 r-xp 00000000 08:02 3807043                    /usr/share/icons/hicolor/icon-theme.cache
+7f89de6cf000-7f89de74e000 r-xs 00740000 08:02 4332062                    /opt/eclipse/plugins/org.eclipse.wst.jsdt.ui_1.1.102.v201201131900.jar
+7f89de74e000-7f89de751000 ---p 00000000 00:00 0 
+7f89de751000-7f89de84f000 rwxp 00000000 00:00 0 
+7f89de84f000-7f89de852000 ---p 00000000 00:00 0 
+7f89de852000-7f89de950000 rwxp 00000000 00:00 0 
+7f89de950000-7f89de953000 ---p 00000000 00:00 0 
+7f89de953000-7f89dea51000 rwxp 00000000 00:00 0 
+7f89dea51000-7f89dea54000 ---p 00000000 00:00 0 
+7f89dea54000-7f89deb52000 rwxp 00000000 00:00 0 
+7f89deb52000-7f89deb55000 ---p 00000000 00:00 0 
+7f89deb55000-7f89dec53000 rwxp 00000000 00:00 0 
+7f89dec53000-7f89dec56000 ---p 00000000 00:00 0 
+7f89dec56000-7f89ded54000 rwxp 00000000 00:00 0 
+7f89ded54000-7f89ded57000 ---p 00000000 00:00 0 
+7f89ded57000-7f89dee55000 rwxp 00000000 00:00 0 
+7f89dee55000-7f89dee58000 ---p 00000000 00:00 0 
+7f89dee58000-7f89def56000 rwxp 00000000 00:00 0 
+7f89def56000-7f89def59000 ---p 00000000 00:00 0 
+7f89def59000-7f89df057000 rwxp 00000000 00:00 0 
+7f89df089000-7f89df0f9000 r-xs 007ed000 08:02 9704824                    /home/jaybeepee/android-sdk/android-sdk-linux/platforms/android-16/data/layoutlib.jar
+7f89df0f9000-7f89df157000 r-xs 00696000 08:02 7345127                    /home/jaybeepee/android-sdk/android-sdk-linux/platforms/android-13/data/layoutlib.jar
+7f89df157000-7f89df1a0000 r-xs 0040a000 08:02 4331587                    /opt/eclipse/plugins/org.eclipse.cdt.core_5.3.2.201202111925.jar
+7f89df1cb000-7f89df1f2000 r-xs 001dd000 08:02 4331820                    /opt/eclipse/plugins/org.eclipse.egit.ui_1.3.0.201202151440-r.jar
+7f89df1f2000-7f89df1f5000 ---p 00000000 00:00 0 
+7f89df1f5000-7f89df2f3000 rwxp 00000000 00:00 0 
+7f89df2f3000-7f89df2f6000 ---p 00000000 00:00 0 
+7f89df2f6000-7f89df3f4000 rwxp 00000000 00:00 0 
+7f89df3f4000-7f89df3f7000 ---p 00000000 00:00 0 
+7f89df3f7000-7f89df4f5000 rwxp 00000000 00:00 0 
+7f89df4f5000-7f89df4f8000 ---p 00000000 00:00 0 
+7f89df4f8000-7f89df5f6000 rwxp 00000000 00:00 0 
+7f89df5f6000-7f89df5f9000 ---p 00000000 00:00 0 
+7f89df5f9000-7f89df6f7000 rwxp 00000000 00:00 0 
+7f89df6f7000-7f89df6fa000 ---p 00000000 00:00 0 
+7f89df6fa000-7f89df7f8000 rwxp 00000000 00:00 0 
+7f89df7f8000-7f89df7fb000 ---p 00000000 00:00 0 
+7f89df7fb000-7f89df8f9000 rwxp 00000000 00:00 0 
+7f89df8f9000-7f89df8fc000 ---p 00000000 00:00 0 
+7f89df8fc000-7f89df9fa000 rwxp 00000000 00:00 0 
+7f89df9fa000-7f89df9fd000 ---p 00000000 00:00 0 
+7f89df9fd000-7f89dfafb000 rwxp 00000000 00:00 0 
+7f89dfafb000-7f89dfafe000 ---p 00000000 00:00 0 
+7f89dfafe000-7f89dfbfc000 rwxp 00000000 00:00 0 
+7f89dfbfc000-7f89dfbff000 ---p 00000000 00:00 0 
+7f89dfbff000-7f89dfcfd000 rwxp 00000000 00:00 0 
+7f89dfcfd000-7f89dfd00000 ---p 00000000 00:00 0 
+7f89dfd00000-7f89dfdfe000 rwxp 00000000 00:00 0 
+7f89dfdfe000-7f89dfe01000 ---p 00000000 00:00 0 
+7f89dfe01000-7f89dfeff000 rwxp 00000000 00:00 0 
+7f89dfeff000-7f89dff02000 ---p 00000000 00:00 0 
+7f89dff02000-7f89e0000000 rwxp 00000000 00:00 0 
+7f89e0000000-7f89e3768000 rwxp 00000000 00:00 0 
+7f89e3768000-7f89e4000000 ---p 00000000 00:00 0 
+7f89e4020000-7f89e4023000 ---p 00000000 00:00 0 
+7f89e4023000-7f89e4121000 rwxp 00000000 00:00 0 
+7f89e4121000-7f89e4124000 ---p 00000000 00:00 0 
+7f89e4124000-7f89e4222000 rwxp 00000000 00:00 0 
+7f89e4222000-7f89e4225000 ---p 00000000 00:00 0 
+7f89e4225000-7f89e4323000 rwxp 00000000 00:00 0 
+7f89e4323000-7f89e4326000 ---p 00000000 00:00 0 
+7f89e4326000-7f89e4424000 rwxp 00000000 00:00 0 
+7f89e4424000-7f89e4427000 ---p 00000000 00:00 0 
+7f89e4427000-7f89e4525000 rwxp 00000000 00:00 0 
+7f89e4525000-7f89e4528000 ---p 00000000 00:00 0 
+7f89e4528000-7f89e4626000 rwxp 00000000 00:00 0 
+7f89e4626000-7f89e4686000 rwxs 00000000 00:04 2850834                    /SYSV00000000 (deleted)
+7f89e468b000-7f89e46b3000 r-xs 00214000 08:02 4331695                    /opt/eclipse/plugins/org.eclipse.ui.ide_3.7.0.v20110928-1505.jar
+7f89e46b3000-7f89e46e5000 r-xs 0062f000 08:02 4329919                    /opt/eclipse/plugins/com.android.ide.eclipse.adt_20.0.1.v201207132230-403220.jar
+7f89e46ed000-7f89e4722000 r-xs 00571000 08:02 4330718                    /opt/eclipse/plugins/org.eclipse.jdt.core_3.7.3.v_OTDT_r202_201202051448.jar
+7f89e4747000-7f89e4781000 r-xp 00000000 08:02 3279503                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
+7f89e4781000-7f89e47bd000 r-xp 00000000 08:02 3279504                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
+7f89e47bd000-7f89e480a000 r-xp 00000000 08:02 3279502                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
+7f89e480a000-7f89e485c000 r-xp 00000000 08:02 3279505                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
+7f89e485e000-7f89e48f4000 r-xp 00000000 08:02 3279494                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
+7f89e48f4000-7f89e498a000 r-xp 00000000 08:02 3279496                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
+7f89e498a000-7f89e4a2f000 r-xp 00000000 08:02 3279493                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
+7f89e4a2f000-7f89e4a32000 ---p 00000000 00:00 0 
+7f89e4a32000-7f89e4b30000 rwxp 00000000 00:00 0 
+7f89e4b30000-7f89e4b38000 r-xs 00115000 08:02 17436760                   /opt/jdk1.6.0_24/jre/lib/resources.jar
+7f89e4b38000-7f89e4b3b000 ---p 00000000 00:00 0 
+7f89e4b3b000-7f89e4c39000 rwxp 00000000 00:00 0 
+7f89e4c39000-7f89e4c3c000 ---p 00000000 00:00 0 
+7f89e4c3c000-7f89e4d3a000 rwxp 00000000 00:00 0 
+7f89e4d3a000-7f89e4d3e000 r-xp 00000000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7f89e4d3e000-7f89e4f3d000 ---p 00004000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7f89e4f3d000-7f89e4f3e000 rwxp 00003000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7f89e4f7f000-7f89e4f98000 r-xs 00133000 08:02 4331972                    /opt/eclipse/plugins/org.eclipse.jdt.debug.ui_3.6.1.v20111006_r372.jar
+7f89e4f98000-7f89e4fdf000 r-xs 003b3000 08:02 4331552                    /opt/eclipse/plugins/org.eclipse.ui.workbench_3.7.1.v20120104-1859.jar
+7f89e4fdf000-7f89e5074000 r-xs 00929000 08:02 4331979                    /opt/eclipse/plugins/org.eclipse.jdt.ui_3.7.2.v20120109-1427.jar
+7f89e5084000-7f89e5098000 r-xs 000f3000 08:02 4331565                    /opt/eclipse/plugins/org.eclipse.jface_3.7.0.v20110928-1505.jar
+7f89e50a7000-7f89e50c8000 r-xs 00178000 08:02 4331510                    /opt/eclipse/plugins/org.eclipse.mylyn.tasks.ui_3.6.5.v20120215-0100.jar
+7f89e50c8000-7f89e50d4000 r-xs 00081000 08:02 4331763                    /opt/eclipse/plugins/org.eclipse.ui.editors_3.7.0.v20110928-1504.jar
+7f89e50d4000-7f89e50e7000 r-xs 000dd000 08:02 4331512                    /opt/eclipse/plugins/org.eclipse.jface.text_3.7.2.v20111213-1208.jar
+7f89e50e7000-7f89e5100000 r-xs 000ed000 08:02 4331580                    /opt/eclipse/plugins/org.eclipse.cdt.debug.ui_7.1.2.201202111925.jar
+7f89e5100000-7f89e5110000 r-xs 00111000 08:02 4331755                    /opt/eclipse/plugins/org.eclipse.cdt.managedbuilder.core_8.0.2.201202111925.jar
+7f89e5111000-7f89e5123000 r-xs 000be000 08:02 4332135                    /opt/eclipse/plugins/org.eclipse.wst.server.ui_1.3.0.v20120210_1439.jar
+7f89e5123000-7f89e5133000 r-xs 000db000 08:02 4331310                    /opt/eclipse/plugins/org.eclipse.ant.ui_3.5.101.v20120110-1739.jar
+7f89e5139000-7f89e5142000 r-xs 0005e000 08:02 4331974                    /opt/eclipse/plugins/org.eclipse.jdt.junit_3.7.0.v20110928-1453.jar
+7f89e5142000-7f89e5199000 r-xs 004b4000 08:02 4331710                    /opt/eclipse/plugins/org.eclipse.cdt.ui_5.3.2.201202111925.jar
+7f89e519c000-7f89e51ce000 r-xs 00244000 08:02 4331549                    /opt/eclipse/plugins/org.eclipse.debug.ui_3.7.102.v20111129-1423_r372.jar
+7f89e51ce000-7f89e51d5000 r-xs 00094000 08:02 17436700                   /opt/jdk1.6.0_24/jre/lib/jsse.jar
+7f89e51d6000-7f89e51df000 r-xs 00058000 08:02 4331726                    /opt/eclipse/plugins/org.eclipse.team.core_3.6.0.I20110525-0800.jar
+7f89e51df000-7f89e51e5000 r-xp 00000000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f89e51e5000-7f89e53e4000 ---p 00006000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f89e53e4000-7f89e53e5000 r-xp 00005000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f89e53e5000-7f89e53e6000 rwxp 00006000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f89e53eb000-7f89e53ff000 r-xs 0024b000 08:02 4331792                    /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f.jar
+7f89e53ff000-7f89e5409000 r-xs 00058000 08:02 4329899                    /opt/eclipse/plugins/org.jboss.tools.jst.web.ui_3.3.1.v20120715-0241-H93-Final.jar
+7f89e5409000-7f89e541a000 r-xs 000cc000 08:02 8790068                    /opt/eclipse/plugins/org.jboss.tools.common.model_3.3.1.v20120715-0209-H81-Final/org.jboss.tools.common.model.jar
+7f89e541a000-7f89e5428000 r-xs 000a6000 08:02 4332164                    /opt/eclipse/plugins/org.eclipse.wst.xml.core_1.1.602.v201201091944.jar
+7f89e542b000-7f89e5437000 r-xs 00083000 08:02 4331685                    /opt/eclipse/plugins/org.eclipse.ui.workbench.texteditor_3.7.0.v20110928-1504.jar
+7f89e5437000-7f89e543a000 r-xs 00013000 08:02 17436698                   /opt/jdk1.6.0_24/jre/lib/jce.jar
+7f89e5440000-7f89e544c000 r-xs 00072000 08:02 4331470                    /opt/eclipse/plugins/org.eclipse.cdt.debug.core_7.1.0.201202111925.jar
+7f89e544c000-7f89e5458000 r-xs 000ba000 08:02 4331493                    /opt/eclipse/plugins/org.eclipse.core.resources_3.7.101.v20120125-1505.jar
+7f89e5458000-7f89e5461000 r-xs 0005e000 08:02 4331681                    /opt/eclipse/plugins/org.eclipse.cdt.make.core_7.1.2.201202111925.jar
+7f89e5461000-7f89e5467000 r-xs 00054000 08:02 10624243                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/sdklib.jar
+7f89e546e000-7f89e547a000 r-xp 00000000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7f89e547a000-7f89e557a000 ---p 0000c000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7f89e557a000-7f89e557b000 rwxp 0000c000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7f89e557b000-7f89e557e000 rwxs 00000000 00:04 2818065                    /SYSV00000000 (deleted)
+7f89e557f000-7f89e5582000 r-xs 00023000 08:02 4331312                    /opt/eclipse/plugins/org.eclipse.jdt.compiler.apt_1.0.400.v0110816-0800.jar
+7f89e5587000-7f89e5590000 r-xs 0006f000 08:02 4329894                    /opt/eclipse/plugins/org.jboss.tools.jst.jsp_3.3.1.v20120715-0241-H93-Final.jar
+7f89e5590000-7f89e5596000 r-xs 00039000 08:02 4332186                    /opt/eclipse/plugins/org.eclipse.wst.xsl.ui_1.1.200.v201103082057.jar
+7f89e5596000-7f89e5599000 r-xs 00013000 08:02 4332168                    /opt/eclipse/plugins/org.eclipse.wst.xml.xpath.ui_1.1.100.v201105030025.jar
+7f89e5599000-7f89e55ab000 r-xs 000db000 08:02 4332165                    /opt/eclipse/plugins/org.eclipse.wst.xml.ui_1.1.202.v201112071516.jar
+7f89e55ab000-7f89e55b2000 r-xs 00052000 08:02 4332133                    /opt/eclipse/plugins/org.eclipse.wst.server.core_1.1.304.v20120208_1420.jar
+7f89e55b6000-7f89e55bc000 r-xs 0003f000 08:02 4332112                    /opt/eclipse/plugins/org.eclipse.wst.html.ui_1.0.602.v201202091936.jar
+7f89e55bc000-7f89e55c7000 r-xs 000a6000 08:02 4329884                    /opt/eclipse/plugins/org.jboss.tools.jsf_3.3.1.v20120715-0313-H119-Final.jar
+7f89e55c7000-7f89e55d1000 r-xs 00062000 08:02 4332138                    /opt/eclipse/plugins/org.eclipse.wst.sse.core_1.1.602.v201112071516.jar
+7f89e55d1000-7f89e55e9000 r-xs 00127000 08:02 4331791                    /opt/eclipse/plugins/org.apache.xerces_2.9.0.v201101211617.jar
+7f89e55e9000-7f89e55f6000 r-xs 000af000 08:02 8000915                    /home/jaybeepee/android-sdk/android-sdk-linux/platform-tools/lib/dx.jar
+7f89e55fb000-7f89e5605000 r-xs 00072000 08:02 4332061                    /opt/eclipse/plugins/org.eclipse.jst.jsp.ui_1.1.602.v201112071516.jar
+7f89e560d000-7f89e5611000 r-xs 00020000 08:02 4331975                    /opt/eclipse/plugins/org.eclipse.jdt.junit.core_3.7.0.v20110928-1453.jar
+7f89e5611000-7f89e5612000 r-xs 00004000 08:02 4331525                    /opt/eclipse/plugins/org.eclipse.swt_3.7.2.v3740f.jar
+7f89e5614000-7f89e561c000 r-xs 0004d000 08:02 4331708                    /opt/eclipse/plugins/org.eclipse.debug.core_3.7.1.v20111129-2031.jar
+7f89e561c000-7f89e562b000 r-xs 000f3000 08:02 10623486                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lombok-ast-0.2.jar
+7f89e562b000-7f89e562e000 ---p 00000000 00:00 0 
+7f89e562e000-7f89e572c000 rwxp 00000000 00:00 0 
+7f89e572f000-7f89e5732000 ---p 00000000 00:00 0 
+7f89e5732000-7f89e5830000 rwxp 00000000 00:00 0 
+7f89e5833000-7f89e5836000 ---p 00000000 00:00 0 
+7f89e5836000-7f89e5934000 rwxp 00000000 00:00 0 
+7f89e5934000-7f89e593f000 r-xp 00000000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7f89e593f000-7f89e5a3f000 ---p 0000b000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7f89e5a3f000-7f89e5a40000 rwxp 0000b000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7f89e5a43000-7f89e5a46000 r-xs 00014000 08:02 4331721                    /opt/eclipse/plugins/org.eclipse.core.contenttype_3.4.100.v20110423-0524.jar
+7f89e5a49000-7f89e5a4f000 r-xs 00034000 08:02 4332108                    /opt/eclipse/plugins/org.eclipse.wst.dtd.ui_1.0.600.v201103171359.jar
+7f89e5a4f000-7f89e5a51000 r-xs 00011000 08:02 4331824                    /opt/eclipse/plugins/org.eclipse.equinox.util_1.0.300.v20110502.jar
+7f89e5a51000-7f89e5a55000 r-xs 00018000 08:02 4331734                    /opt/eclipse/plugins/org.eclipse.cdt.codan.ui_2.0.1.201202111925.jar
+7f89e5a55000-7f89e5a57000 r-xp 00000000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7f89e5a57000-7f89e5b56000 ---p 00002000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7f89e5b56000-7f89e5b57000 rwxp 00001000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7f89e5b5a000-7f89e5b60000 r-xs 0003f000 08:02 4332105                    /opt/eclipse/plugins/org.eclipse.wst.css.ui_1.0.601.v201201101544.jar
+7f89e5b60000-7f89e5b6a000 r-xs 00058000 08:02 4331533                    /opt/eclipse/plugins/org.eclipse.mylyn.commons.ui_3.6.1.v20110720-0100.jar
+7f89e5b6a000-7f89e5b6c000 r-xs 00010000 08:02 4331771                    /opt/eclipse/plugins/org.eclipse.cdt.mylyn.ui_3.6.0.v20110608-1400.jar
+7f89e5b6c000-7f89e5b70000 r-xs 0001d000 08:02 4331548                    /opt/eclipse/plugins/org.eclipse.cdt.codan.core_2.0.0.201202111925.jar
+7f89e5b70000-7f89e5b75000 r-xs 00038000 08:02 4331543                    /opt/eclipse/plugins/org.eclipse.text_3.5.101.v20110928-1504.jar
+7f89e5b75000-7f89e5b7d000 r-xs 00072000 08:02 4329896                    /opt/eclipse/plugins/org.jboss.tools.jst.web_3.3.1.v20120715-0241-H93-Final.jar
+7f89e5b7d000-7f89e5b8e000 r-xs 000d3000 08:02 10623277                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/freemarker-2.3.19.jar
+7f89e5b8e000-7f89e5b92000 r-xp 00000000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f89e5b92000-7f89e5d92000 ---p 00004000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f89e5d92000-7f89e5d93000 r-xp 00004000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f89e5d93000-7f89e5d94000 rwxp 00005000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f89e5d95000-7f89e5e45000 r-xp 00000000 08:02 3279497                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+7f89e5e45000-7f89e5e47000 r-xp 00000000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f89e5e47000-7f89e6046000 ---p 00002000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f89e6046000-7f89e6047000 r-xp 00001000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f89e6047000-7f89e6048000 rwxp 00002000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f89e6048000-7f89e6049000 r-xs 00000000 08:02 9175124                    /var/cache/fontconfig/c05880de57d1f5e948fdfacc138775d9-le64.cache-3
+7f89e6049000-7f89e6052000 r-xs 00000000 08:02 9175121                    /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-3
+7f89e6052000-7f89e6054000 r-xs 00000000 08:02 9175122                    /var/cache/fontconfig/99e8ed0e538f840c565b6ed5dad60d56-le64.cache-3
+7f89e6054000-7f89e6057000 r-xs 00000000 08:02 9186895                    /var/cache/fontconfig/e383d7ea5fbe662a33d9b44caf393297-le64.cache-3
+7f89e6057000-7f89e605b000 r-xs 00000000 08:02 9175108                    /var/cache/fontconfig/2cd17615ca594fa2959ae173292e504c-le64.cache-3
+7f89e605b000-7f89e605c000 r-xs 00000000 08:02 9175132                    /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-le64.cache-3
+7f89e605c000-7f89e6061000 r-xs 00000000 08:02 9175118                    /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-le64.cache-3
+7f89e6061000-7f89e6062000 r-xs 00000000 08:02 9175112                    /var/cache/fontconfig/4c73fe0c47614734b17d736dbde7580a-le64.cache-3
+7f89e6062000-7f89e6063000 r-xs 00000000 08:02 9175105                    /var/cache/fontconfig/0d8c3b2ac0904cb8a57a757ad11a4a08-le64.cache-3
+7f89e6063000-7f89e6091000 r-xs 00000000 08:02 9186874                    /var/cache/fontconfig/365b55f210c0a22e9a19e35191240f32-le64.cache-3
+7f89e6091000-7f89e6096000 r-xp 00000000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f89e6096000-7f89e6295000 ---p 00005000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f89e6295000-7f89e6296000 r-xp 00004000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f89e6296000-7f89e6297000 rwxp 00005000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f89e6297000-7f89e630b000 r-xp 00000000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7f89e630b000-7f89e640a000 ---p 00074000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7f89e640a000-7f89e640d000 rwxp 00073000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7f89e640d000-7f89e640f000 rwxp 00000000 00:00 0 
+7f89e640f000-7f89e648d000 r-xp 00000000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7f89e648d000-7f89e658c000 ---p 0007e000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7f89e658c000-7f89e6593000 rwxp 0007d000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7f89e6593000-7f89e6596000 rwxp 00000000 00:00 0 
+7f89e6596000-7f89e6599000 ---p 00000000 00:00 0 
+7f89e6599000-7f89e6697000 rwxp 00000000 00:00 0 
+7f89e6697000-7f89e669a000 ---p 00000000 00:00 0 
+7f89e669a000-7f89e6798000 rwxp 00000000 00:00 0 
+7f89e6798000-7f89e679b000 ---p 00000000 00:00 0 
+7f89e679b000-7f89e6899000 rwxp 00000000 00:00 0 
+7f89e6899000-7f89e689c000 ---p 00000000 00:00 0 
+7f89e689c000-7f89e699a000 rwxp 00000000 00:00 0 
+7f89e699a000-7f89e699d000 ---p 00000000 00:00 0 
+7f89e699d000-7f89e6a9b000 rwxp 00000000 00:00 0 
+7f89e6a9b000-7f89e6a9e000 ---p 00000000 00:00 0 
+7f89e6a9e000-7f89e6b9c000 rwxp 00000000 00:00 0 
+7f89e6b9c000-7f89e6b9f000 ---p 00000000 00:00 0 
+7f89e6b9f000-7f89e6c9d000 rwxp 00000000 00:00 0 
+7f89e6c9d000-7f89e6ca4000 r-xp 00000000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7f89e6ca4000-7f89e6da3000 ---p 00007000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7f89e6da3000-7f89e6da5000 rwxp 00006000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7f89e6da5000-7f89e6db8000 r-xp 00000000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7f89e6db8000-7f89e6eb9000 ---p 00013000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7f89e6eb9000-7f89e6ebc000 rwxp 00014000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7f89e6ebc000-7f89e6ebf000 r-xp 00000000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f89e6ebf000-7f89e70bf000 ---p 00003000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f89e70bf000-7f89e70c0000 r-xp 00003000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f89e70c0000-7f89e70c1000 rwxp 00004000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f89e70c1000-7f89e70ec000 r-xp 00000000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f89e70ec000-7f89e72eb000 ---p 0002b000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f89e72eb000-7f89e72ec000 r-xp 0002a000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f89e72ec000-7f89e72ed000 rwxp 0002b000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f89e72ed000-7f89e72f3000 r-xp 00000000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f89e72f3000-7f89e74f2000 ---p 00006000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f89e74f2000-7f89e74f3000 r-xp 00005000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f89e74f3000-7f89e74f4000 rwxp 00006000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f89e74f4000-7f89e751f000 r-xp 00000000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f89e751f000-7f89e771e000 ---p 0002b000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f89e771e000-7f89e771f000 r-xp 0002a000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f89e771f000-7f89e7720000 rwxp 0002b000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f89e7720000-7f89e7728000 r-xp 00000000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f89e7728000-7f89e7928000 ---p 00008000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f89e7928000-7f89e7929000 r-xp 00008000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f89e7929000-7f89e792a000 rwxp 00009000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f89e792a000-7f89e793a000 r-xp 00000000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f89e793a000-7f89e7b39000 ---p 00010000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f89e7b39000-7f89e7b3a000 r-xp 0000f000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f89e7b3a000-7f89e7b3b000 rwxp 00010000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f89e7b3b000-7f89e7b42000 r-xp 00000000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f89e7b42000-7f89e7d41000 ---p 00007000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f89e7d41000-7f89e7d42000 r-xp 00006000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f89e7d42000-7f89e7d43000 rwxp 00007000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f89e7d43000-7f89e7d52000 r-xp 00000000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f89e7d52000-7f89e7f51000 ---p 0000f000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f89e7f51000-7f89e7f52000 r-xp 0000e000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f89e7f52000-7f89e7f53000 rwxp 0000f000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f89e7f53000-7f89e7f57000 r-xp 00000000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f89e7f57000-7f89e8156000 ---p 00004000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f89e8156000-7f89e8157000 r-xp 00003000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f89e8157000-7f89e8158000 rwxp 00004000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f89e8158000-7f89e815d000 r-xp 00000000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f89e815d000-7f89e835c000 ---p 00005000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f89e835c000-7f89e835d000 r-xp 00004000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f89e835d000-7f89e835e000 rwxp 00005000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f89e835e000-7f89e837d000 r-xp 00000000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f89e837d000-7f89e857d000 ---p 0001f000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f89e857d000-7f89e857f000 r-xp 0001f000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f89e857f000-7f89e8580000 rwxp 00021000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f89e8580000-7f89e89b2000 r-xp 00000000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f89e89b2000-7f89e8bb1000 ---p 00432000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f89e8bb1000-7f89e8bb8000 r-xp 00431000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f89e8bb8000-7f89e8bbc000 rwxp 00438000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f89e8bbc000-7f89e8bbe000 rwxp 00000000 00:00 0 
+7f89e8bbe000-7f89e8bc3000 r-xp 00000000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f89e8bc3000-7f89e8dc2000 ---p 00005000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f89e8dc2000-7f89e8dc3000 r-xp 00004000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f89e8dc3000-7f89e8dc4000 rwxp 00005000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f89e8dc4000-7f89e8dc6000 r-xp 00000000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f89e8dc6000-7f89e8fc5000 ---p 00002000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f89e8fc5000-7f89e8fc6000 r-xp 00001000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f89e8fc6000-7f89e8fc7000 rwxp 00002000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f89e8fc7000-7f89e8fe2000 r-xp 00000000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f89e8fe2000-7f89e91e1000 ---p 0001b000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f89e91e1000-7f89e91e2000 r-xp 0001a000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f89e91e2000-7f89e91e3000 rwxp 0001b000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f89e91e3000-7f89e91ea000 r-xp 00000000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f89e91ea000-7f89e93ea000 ---p 00007000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f89e93ea000-7f89e93eb000 r-xp 00007000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f89e93eb000-7f89e93ec000 rwxp 00008000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f89e93ec000-7f89e93ee000 r-xp 00000000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f89e93ee000-7f89e95ed000 ---p 00002000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f89e95ed000-7f89e95ee000 r-xp 00001000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f89e95ee000-7f89e95ef000 rwxp 00002000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f89e95ef000-7f89e9615000 r-xp 00000000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f89e9615000-7f89e9815000 ---p 00026000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f89e9815000-7f89e9816000 r-xp 00026000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f89e9816000-7f89e9817000 rwxp 00027000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f89e9817000-7f89e9885000 r-xp 00000000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f89e9885000-7f89e9a85000 ---p 0006e000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f89e9a85000-7f89e9a8a000 r-xp 0006e000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f89e9a8a000-7f89e9a8b000 rwxp 00073000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f89e9a8b000-7f89e9ab2000 r-xp 00000000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f89e9ab2000-7f89e9cb2000 ---p 00027000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f89e9cb2000-7f89e9cb4000 r-xp 00027000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f89e9cb4000-7f89e9cb5000 rwxp 00029000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f89e9cb5000-7f89e9ccc000 r-xp 00000000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f89e9ccc000-7f89e9ecc000 ---p 00017000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f89e9ecc000-7f89e9ecd000 r-xp 00017000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f89e9ecd000-7f89e9ece000 rwxp 00018000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f89e9ece000-7f89e9ed0000 rwxp 00000000 00:00 0 
+7f89e9ed0000-7f89e9eec000 r-xp 00000000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f89e9eec000-7f89ea0eb000 ---p 0001c000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f89ea0eb000-7f89ea0ec000 r-xp 0001b000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f89ea0ec000-7f89ea0ed000 rwxp 0001c000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f89ea0ed000-7f89ea0ee000 rwxp 00000000 00:00 0 
+7f89ea0ee000-7f89ea105000 r-xp 00000000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f89ea105000-7f89ea304000 ---p 00017000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f89ea304000-7f89ea305000 r-xp 00016000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f89ea305000-7f89ea306000 rwxp 00017000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f89ea306000-7f89ea309000 r-xp 00000000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f89ea309000-7f89ea508000 ---p 00003000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f89ea508000-7f89ea509000 r-xp 00002000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f89ea509000-7f89ea50a000 rwxp 00003000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f89ea50a000-7f89ea59c000 r-xp 00000000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f89ea59c000-7f89ea79b000 ---p 00092000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f89ea79b000-7f89ea7a1000 r-xp 00091000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f89ea7a1000-7f89ea7a2000 rwxp 00097000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f89ea7a2000-7f89ea7cc000 r-xp 00000000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f89ea7cc000-7f89ea9cb000 ---p 0002a000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f89ea9cb000-7f89ea9cc000 r-xp 00029000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f89ea9cc000-7f89ea9cd000 rwxp 0002a000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f89ea9cd000-7f89eab00000 r-xp 00000000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f89eab00000-7f89ead00000 ---p 00133000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f89ead00000-7f89ead01000 r-xp 00133000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f89ead01000-7f89ead05000 rwxp 00134000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f89ead05000-7f89eadbe000 r-xp 00000000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f89eadbe000-7f89eafbd000 ---p 000b9000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f89eafbd000-7f89eafbf000 r-xp 000b8000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f89eafbf000-7f89eafc0000 rwxp 000ba000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f89eafc0000-7f89eafc3000 rwxp 00000000 00:00 0 
+7f89eafc3000-7f89eafc8000 r-xp 00000000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f89eafc8000-7f89eb1c7000 ---p 00005000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f89eb1c7000-7f89eb1c8000 r-xp 00004000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f89eb1c8000-7f89eb1c9000 rwxp 00005000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f89eb1c9000-7f89eb1cb000 r-xp 00000000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f89eb1cb000-7f89eb3ca000 ---p 00002000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f89eb3ca000-7f89eb3cb000 r-xp 00001000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f89eb3cb000-7f89eb3cc000 rwxp 00002000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f89eb3cc000-7f89eb3ce000 r-xp 00000000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f89eb3ce000-7f89eb5cd000 ---p 00002000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f89eb5cd000-7f89eb5ce000 r-xp 00001000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f89eb5ce000-7f89eb5cf000 rwxp 00002000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f89eb5cf000-7f89eb5d8000 r-xp 00000000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f89eb5d8000-7f89eb7d7000 ---p 00009000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f89eb7d7000-7f89eb7d8000 r-xp 00008000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f89eb7d8000-7f89eb7d9000 rwxp 00009000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f89eb7d9000-7f89eb7e1000 r-xp 00000000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f89eb7e1000-7f89eb9e0000 ---p 00008000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f89eb9e0000-7f89eb9e1000 r-xp 00007000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f89eb9e1000-7f89eb9e2000 rwxp 00008000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f89eb9e2000-7f89eb9f1000 r-xp 00000000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f89eb9f1000-7f89ebbf0000 ---p 0000f000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f89ebbf0000-7f89ebbf1000 r-xp 0000e000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f89ebbf1000-7f89ebbf2000 rwxp 0000f000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f89ebbf2000-7f89ebbf4000 r-xp 00000000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f89ebbf4000-7f89ebdf3000 ---p 00002000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f89ebdf3000-7f89ebdf4000 r-xp 00001000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f89ebdf4000-7f89ebdf5000 rwxp 00002000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f89ebdf5000-7f89ebdfe000 r-xp 00000000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f89ebdfe000-7f89ebffe000 ---p 00009000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f89ebffe000-7f89ebfff000 r-xp 00009000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f89ebfff000-7f89ec000000 rwxp 0000a000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f89ec000000-7f89ef7e1000 rwxp 00000000 00:00 0 
+7f89ef7e1000-7f89f0000000 ---p 00000000 00:00 0 
+7f89f0000000-7f89f0001000 r-xs 00000000 08:02 9175116                    /var/cache/fontconfig/6a53c69dea097a2d716e069445527da8-le64.cache-3
+7f89f0001000-7f89f0007000 r-xs 00000000 08:02 9175123                    /var/cache/fontconfig/a755afe4a08bf5b97852ceb7400b47bc-le64.cache-3
+7f89f0007000-7f89f000d000 r-xs 00000000 08:02 9175113                    /var/cache/fontconfig/515ca1ebc4b18308bea979be5704f9db-le64.cache-3
+7f89f000d000-7f89f0016000 r-xs 00000000 08:02 9175117                    /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-le64.cache-3
+7f89f0016000-7f89f0026000 r-xs 00000000 08:02 9175106                    /var/cache/fontconfig/0f34bcd4b6ee430af32735b75db7f02b-le64.cache-3
+7f89f0026000-7f89f0029000 r-xs 00000000 08:02 9175129                    /var/cache/fontconfig/d60319d88cac85ba9e1a07bd06cfbb8c-le64.cache-3
+7f89f0029000-7f89f0039000 r-xs 00000000 08:02 9175128                    /var/cache/fontconfig/d52a8644073d54c13679302ca1180695-le64.cache-3
+7f89f0039000-7f89f0041000 r-xs 00000000 08:02 9186840                    /var/cache/fontconfig/153bb866d4d26e7cd19eee2129f8d8d2-le64.cache-3
+7f89f0041000-7f89f004c000 r-xs 00000000 08:02 9175131                    /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-3
+7f89f004c000-7f89f0055000 r-xs 00052000 08:02 10623249                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/sdkuilib.jar
+7f89f0055000-7f89f0091000 r-xs 00629000 08:02 4331825                    /opt/eclipse/plugins/com.ibm.icu_4.4.2.v20110823.jar
+7f89f0092000-7f89f0099000 r-xs 00048000 08:02 4331867                    /opt/eclipse/plugins/org.eclipse.ltk.core.refactoring_3.5.201.r372_v20111101-0700.jar
+7f89f0099000-7f89f00a3000 r-xs 00076000 08:02 4332104                    /opt/eclipse/plugins/org.eclipse.wst.css.core_1.1.501.v201111292150.jar
+7f89f00a3000-7f89f00a5000 r-xs 0000f000 08:02 4329868                    /opt/eclipse/plugins/org.jboss.tools.common.validation_3.3.1.v20120715-0209-H81-Final.jar
+7f89f00a5000-7f89f00aa000 r-xs 00025000 08:02 4329860                    /opt/eclipse/plugins/org.jboss.tools.common.el.core_3.3.1.v20120715-0209-H81-Final.jar
+7f89f00aa000-7f89f00b9000 r-xs 0005f000 08:02 10623564                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/propertysheet.jar
+7f89f00b9000-7f89f00ba000 r-xs 0000d000 08:02 4331314                    /opt/eclipse/plugins/org.eclipse.jdt.compiler.tool_1.0.100.v_B79_R37x.jar
+7f89f00ba000-7f89f00bb000 r-xs 00004000 08:02 4331567                    /opt/eclipse/plugins/org.eclipse.cdt.core.linux.x86_64_5.2.0.201202111925.jar
+7f89f00bc000-7f89f00bf000 r-xs 00019000 08:02 4331703                    /opt/eclipse/plugins/org.eclipse.core.filebuffers_3.5.200.v20110928-1504.jar
+7f89f00bf000-7f89f00c2000 r-xs 00010000 08:02 4329895                    /opt/eclipse/plugins/org.jboss.tools.jst.text.ext_3.3.1.v20120715-0241-H93-Final.jar
+7f89f00c2000-7f89f00c4000 r-xs 00009000 08:02 4331833                    /opt/eclipse/plugins/org.eclipse.cdt.codan.core.cxx_1.0.0.201202111925.jar
+7f89f00c7000-7f89f00ca000 r-xs 00013000 08:02 4331971                    /opt/eclipse/plugins/org.eclipse.jdt.core.manipulation_1.4.0.v20110928-1453.jar
+7f89f00ca000-7f89f00cc000 r-xs 00001000 08:02 4329917                    /opt/eclipse/plugins/org.jboss.tools.xulrunner.initializer_3.3.1.v20120715-0301-H105-Final.jar
+7f89f00cc000-7f89f00cf000 r-xs 00019000 08:02 4331472                    /opt/eclipse/plugins/org.eclipse.mylyn.context.core_3.6.1.v20110720-0100.jar
+7f89f00cf000-7f89f00d0000 r-xs 00005000 08:02 10623701                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/manifmerger.jar
+7f89f00d0000-7f89f00d1000 r-xs 00001000 08:02 10623602                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/swtmenubar.jar
+7f89f00d1000-7f89f00d2000 r-xs 00002000 08:02 10623575                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ant-glob.jar
+7f89f00d2000-7f89f00d4000 r-xs 00004000 08:02 10623549                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/asm-tree-4.0.jar
+7f89f00d4000-7f89f00d6000 r-xs 0000a000 08:02 10623501                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/asm-4.0.jar
+7f89f00d6000-7f89f00dd000 r-xs 00038000 08:02 4331536                    /opt/eclipse/plugins/org.eclipse.mylyn.context.ui_3.6.1.v20120112-0100.jar
+7f89f00dd000-7f89f00e1000 r-xs 0001e000 08:02 4329878                    /opt/eclipse/plugins/org.jboss.tools.hibernate.xml_3.5.1.v20120715-0252-H98-Final.jar
+7f89f00e1000-7f89f00ec000 r-xs 00086000 08:02 19793059                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/884/1/.cp/struts.jar
+7f89f00ec000-7f89f00f1000 r-xs 00039000 08:02 4335890                    /opt/eclipse/plugins/org.jboss.tools.seam.xml_3.3.0.v20120612-1916-H130-Final.jar
+7f89f00f1000-7f89f00f4000 r-xs 0001c000 08:02 4335886                    /opt/eclipse/plugins/org.jboss.tools.seam.pages.xml_3.3.0.v20120612-1916-H130-Final.jar
+7f89f00f4000-7f89f00f6000 r-xs 00007000 08:02 4332452                    /opt/eclipse/plugins/org.jboss.tools.cdi.xml_1.2.0.v20120611-1827-H85-Final.jar
+7f89f00f6000-7f89f00f9000 r-xs 0001f000 08:02 4329859                    /opt/eclipse/plugins/org.jboss.tools.common_3.3.1.v20120715-0209-H81-Final.jar
+7f89f00f9000-7f89f00fc000 r-xs 00014000 08:02 4331379                    /opt/eclipse/plugins/org.eclipse.core.jobs_3.5.101.v20120113-1953.jar
+7f89f00fc000-7f89f0100000 r-xs 00017000 08:02 4331488                    /opt/eclipse/plugins/org.eclipse.core.commands_3.6.0.I20110111-0800.jar
+7f89f0100000-7f89f0114000 r-xs 0013a000 08:02 4331531                    /opt/eclipse/plugins/org.eclipse.osgi_3.7.2.v20120110-1415.jar
+7f89f0114000-7f89f0174000 rwxs 00000000 00:04 2785295                    /SYSV00000000 (deleted)
+7f89f0174000-7f89f01d7000 rwxp 00000000 00:00 0 
+7f89f01d7000-7f89f01e9000 r-xp 00000000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f89f01e9000-7f89f03e8000 ---p 00012000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f89f03e8000-7f89f03e9000 r-xp 00011000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f89f03e9000-7f89f03ea000 rwxp 00012000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f89f03ea000-7f89f041e000 r-xp 00000000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f89f041e000-7f89f061e000 ---p 00034000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f89f061e000-7f89f061f000 r-xp 00034000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f89f061f000-7f89f0620000 rwxp 00035000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f89f0620000-7f89f075b000 r-xp 00000000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f89f075b000-7f89f095a000 ---p 0013b000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f89f095a000-7f89f095e000 r-xp 0013a000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f89f095e000-7f89f0960000 rwxp 0013e000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f89f0960000-7f89f0962000 rwxp 00000000 00:00 0 
+7f89f0962000-7f89f0980000 r-xp 00000000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f89f0980000-7f89f0b7f000 ---p 0001e000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f89f0b7f000-7f89f0b80000 r-xp 0001d000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f89f0b80000-7f89f0b81000 rwxp 0001e000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f89f0b81000-7f89f0bc8000 r-xp 00000000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f89f0bc8000-7f89f0dc8000 ---p 00047000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f89f0dc8000-7f89f0dca000 r-xp 00047000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f89f0dca000-7f89f0dcb000 rwxp 00049000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f89f0dcb000-7f89f0dd6000 r-xp 00000000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f89f0dd6000-7f89f0fd6000 ---p 0000b000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f89f0fd6000-7f89f0fd7000 r-xp 0000b000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f89f0fd7000-7f89f0fd8000 rwxp 0000c000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f89f0fd8000-7f89f1085000 r-xp 00000000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f89f1085000-7f89f1285000 ---p 000ad000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f89f1285000-7f89f1289000 r-xp 000ad000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f89f1289000-7f89f128b000 rwxp 000b1000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f89f128b000-7f89f12c6000 r-xp 00000000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f89f12c6000-7f89f14c5000 ---p 0003b000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f89f14c5000-7f89f14c6000 r-xp 0003a000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f89f14c6000-7f89f14c7000 rwxp 0003b000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f89f14c7000-7f89f14ce000 r-xp 00000000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f89f14ce000-7f89f16cd000 ---p 00007000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f89f16cd000-7f89f16ce000 r-xp 00006000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f89f16ce000-7f89f16cf000 rwxp 00007000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f89f16cf000-7f89f16d3000 r-xp 00000000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f89f16d3000-7f89f18d2000 ---p 00004000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f89f18d2000-7f89f18d3000 r-xp 00003000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f89f18d3000-7f89f18d4000 rwxp 00004000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f89f18d4000-7f89f19c8000 r-xp 00000000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f89f19c8000-7f89f1bc7000 ---p 000f4000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f89f1bc7000-7f89f1bc8000 r-xp 000f3000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f89f1bc8000-7f89f1bc9000 rwxp 000f4000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f89f1bc9000-7f89f1bca000 rwxp 00000000 00:00 0 
+7f89f1bca000-7f89f1c18000 r-xp 00000000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f89f1c18000-7f89f1e18000 ---p 0004e000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f89f1e18000-7f89f1e19000 r-xp 0004e000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f89f1e19000-7f89f1e1a000 rwxp 0004f000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f89f1e1a000-7f89f1e1b000 rwxp 00000000 00:00 0 
+7f89f1e1b000-7f89f1e1c000 r-xs 00000000 08:02 9180773                    /var/cache/fontconfig/4794a0821666d79190d59a36cb4f44b5-le64.cache-3
+7f89f1e1c000-7f89f1e20000 r-xs 00000000 08:02 9186807                    /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-3
+7f89f1e20000-7f89f1e22000 r-xs 00013000 08:02 10623308                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ide_common.jar
+7f89f1e22000-7f89f1e24000 r-xs 00007000 08:02 10623312                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/rule_api.jar
+7f89f1e24000-7f89f1e26000 r-xs 00006000 08:02 10623298                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/layoutlib_api.jar
+7f89f1e26000-7f89f1e41000 r-xs 00000000 08:02 2622928                    /usr/share/mime/mime.cache
+7f89f1e41000-7f89f1e50000 r-xp 00000000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7f89f1e50000-7f89f1f4f000 ---p 0000f000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7f89f1f4f000-7f89f1f51000 rwxp 0000e000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7f89f1f51000-7f89f1f52000 r-xs 0000b000 08:02 4331532                    /opt/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
+7f89f1f52000-7f89f1f53000 ---p 00000000 00:00 0 
+7f89f1f53000-7f89f2053000 rwxp 00000000 00:00 0 
+7f89f2053000-7f89f2056000 ---p 00000000 00:00 0 
+7f89f2056000-7f89f2154000 rwxp 00000000 00:00 0 
+7f89f2154000-7f89f2157000 ---p 00000000 00:00 0 
+7f89f2157000-7f89f2255000 rwxp 00000000 00:00 0 
+7f89f2255000-7f89f2258000 ---p 00000000 00:00 0 
+7f89f2258000-7f89f2356000 rwxp 00000000 00:00 0 
+7f89f2356000-7f89f2359000 ---p 00000000 00:00 0 
+7f89f2359000-7f89f2457000 rwxp 00000000 00:00 0 
+7f89f2457000-7f89f2b3b000 r-xp 00000000 08:02 2104481                    /usr/lib/locale/locale-archive
+7f89f2b3b000-7f89f2b3e000 ---p 00000000 00:00 0 
+7f89f2b3e000-7f89f2c3c000 rwxp 00000000 00:00 0 
+7f89f2c3c000-7f89f2c3f000 ---p 00000000 00:00 0 
+7f89f2c3f000-7f89f2d3d000 rwxp 00000000 00:00 0 
+7f89f2d3d000-7f89f2d3e000 ---p 00000000 00:00 0 
+7f89f2d3e000-7f89f377b000 rwxp 00000000 00:00 0 
+7f89f377b000-7f89f3913000 r-xs 03027000 08:02 17436761                   /opt/jdk1.6.0_24/jre/lib/rt.jar
+7f89f3913000-7f89f3914000 ---p 00000000 00:00 0 
+7f89f3914000-7f89f3a14000 rwxp 00000000 00:00 0 
+7f89f3a14000-7f89f3a15000 ---p 00000000 00:00 0 
+7f89f3a15000-7f89f3b15000 rwxp 00000000 00:00 0 
+7f89f3b15000-7f89f3b16000 ---p 00000000 00:00 0 
+7f89f3b16000-7f89f3c16000 rwxp 00000000 00:00 0 
+7f89f3c16000-7f89f3c17000 ---p 00000000 00:00 0 
+7f89f3c17000-7f89f3d17000 rwxp 00000000 00:00 0 
+7f89f3d17000-7f89f3d18000 ---p 00000000 00:00 0 
+7f89f3d18000-7f89f3e18000 rwxp 00000000 00:00 0 
+7f89f3e18000-7f89f3e19000 ---p 00000000 00:00 0 
+7f89f3e19000-7f89f3f19000 rwxp 00000000 00:00 0 
+7f89f3f19000-7f89f3f1a000 ---p 00000000 00:00 0 
+7f89f3f1a000-7f89f401a000 rwxp 00000000 00:00 0 
+7f89f401a000-7f89f401b000 ---p 00000000 00:00 0 
+7f89f401b000-7f89f4158000 rwxp 00000000 00:00 0 
+7f89f4158000-7f89f419b000 rwxp 00000000 00:00 0 
+7f89f419b000-7f89f42f1000 rwxp 00000000 00:00 0 
+7f89f42f1000-7f89f4446000 rwxp 00000000 00:00 0 
+7f89f4446000-7f89f4483000 rwxp 00000000 00:00 0 
+7f89f4483000-7f89f44c6000 rwxp 00000000 00:00 0 
+7f89f44c6000-7f89f461c000 rwxp 00000000 00:00 0 
+7f89f461c000-7f89f4770000 rwxp 00000000 00:00 0 
+7f89f4770000-7f89f48c6000 rwxp 00000000 00:00 0 
+7f89f48c6000-7f89f53b7000 rwxp 00000000 00:00 0 
+7f89f53b7000-7f89f78c7000 rwxp 00000000 00:00 0 
+7f89f78c7000-7f89f78d5000 r-xp 00000000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7f89f78d5000-7f89f79d7000 ---p 0000e000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7f89f79d7000-7f89f79da000 rwxp 00010000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7f89f79da000-7f89f79db000 rwxp 00000000 00:00 0 
+7f89f79db000-7f89f79e7000 r-xp 00000000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f89f79e7000-7f89f7be6000 ---p 0000c000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f89f7be6000-7f89f7be7000 r-xp 0000b000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f89f7be7000-7f89f7be8000 rwxp 0000c000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f89f7be8000-7f89f7bf2000 r-xp 00000000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f89f7bf2000-7f89f7df2000 ---p 0000a000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f89f7df2000-7f89f7df3000 r-xp 0000a000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f89f7df3000-7f89f7df4000 rwxp 0000b000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f89f7df4000-7f89f7dfc000 r-xp 00000000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f89f7dfc000-7f89f7ffb000 ---p 00008000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f89f7ffb000-7f89f7ffc000 r-xp 00007000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f89f7ffc000-7f89f7ffd000 rwxp 00008000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f89f7ffd000-7f89f8004000 r-xp 00000000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7f89f8004000-7f89f8105000 ---p 00007000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7f89f8105000-7f89f8107000 rwxp 00008000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7f89f8107000-7f89f8108000 rwxp 00000000 00:00 0 
+7f89f8108000-7f89f811f000 r-xp 00000000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f89f811f000-7f89f831e000 ---p 00017000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f89f831e000-7f89f831f000 r-xp 00016000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f89f831f000-7f89f8320000 rwxp 00017000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f89f8320000-7f89f8322000 rwxp 00000000 00:00 0 
+7f89f8322000-7f89f834b000 r-xp 00000000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7f89f834b000-7f89f844a000 ---p 00029000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7f89f844a000-7f89f8451000 rwxp 00028000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7f89f8451000-7f89f845e000 r-xp 00000000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7f89f845e000-7f89f855d000 ---p 0000d000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7f89f855d000-7f89f8560000 rwxp 0000c000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7f89f8560000-7f89f8567000 r-xp 00000000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f89f8567000-7f89f8766000 ---p 00007000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f89f8766000-7f89f8767000 r-xp 00006000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f89f8767000-7f89f8768000 rwxp 00007000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f89f8768000-7f89f876b000 ---p 00000000 00:00 0 
+7f89f876b000-7f89f8869000 rwxp 00000000 00:00 0 
+7f89f8869000-7f89f88ec000 r-xp 00000000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f89f88ec000-7f89f8aeb000 ---p 00083000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f89f8aeb000-7f89f8aec000 r-xp 00082000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f89f8aec000-7f89f8aed000 rwxp 00083000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f89f8aed000-7f89f932b000 r-xp 00000000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7f89f932b000-7f89f942a000 ---p 0083e000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7f89f942a000-7f89f95be000 rwxp 0083d000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7f89f95be000-7f89f95f7000 rwxp 00000000 00:00 0 
+7f89f95f7000-7f89f9790000 r-xp 00000000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f89f9790000-7f89f998f000 ---p 00199000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f89f998f000-7f89f9993000 r-xp 00198000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f89f9993000-7f89f9994000 rwxp 0019c000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f89f9994000-7f89f999a000 rwxp 00000000 00:00 0 
+7f89f999a000-7f89f999c000 r-xp 00000000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f89f999c000-7f89f9b9c000 ---p 00002000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f89f9b9c000-7f89f9b9d000 r-xp 00002000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f89f9b9d000-7f89f9b9e000 rwxp 00003000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f89f9b9e000-7f89f9bb6000 r-xp 00000000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f89f9bb6000-7f89f9db5000 ---p 00018000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f89f9db5000-7f89f9db6000 r-xp 00017000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f89f9db6000-7f89f9db7000 rwxp 00018000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f89f9db7000-7f89f9dbb000 rwxp 00000000 00:00 0 
+7f89f9dbb000-7f89f9ddc000 r-xp 00000000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7f89f9ddc000-7f89f9ddd000 r-xs 00002000 08:02 4331783                    /opt/eclipse/plugins/org.eclipse.cdt.core.linux_5.2.0.201202111925.jar
+7f89f9ddd000-7f89f9de1000 r-xs 0007f000 08:02 10623340                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/assetstudio.jar
+7f89f9de1000-7f89f9de3000 r-xs 00010000 08:02 4332211                    /opt/eclipse/plugins/org.eclipse.m2e.refactoring_1.0.200.20111228-1245.jar
+7f89f9de3000-7f89f9de5000 r-xs 00004000 08:02 4331827                    /opt/eclipse/plugins/org.eclipse.cdt.codan.ui.cxx_2.0.0.201202111925.jar
+7f89f9de5000-7f89f9e11000 rwxp 00000000 00:00 0 
+7f89f9e11000-7f89f9ea5000 rwxp 00000000 00:00 0 
+7f89f9ea5000-7f89f9ea8000 rwxp 00000000 00:00 0 
+7f89f9ea8000-7f89f9eaf000 r-xp 00000000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7f89f9eaf000-7f89f9fb0000 ---p 00007000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7f89f9fb0000-7f89f9fb2000 rwxp 00008000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7f89f9fb2000-7f89f9fb3000 rwxp 00000000 00:00 0 
+7f89f9fb3000-7f89f9fb4000 r-xs 0000a000 08:02 10623266                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/kxml2-2.3.0.jar
+7f89f9fb4000-7f89f9fb5000 r-xs 00002000 08:02 10623256                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ninepatch.jar
+7f89f9fb6000-7f89f9fb9000 r-xs 0000d000 08:02 4329897                    /opt/eclipse/plugins/org.jboss.tools.jst.web.tiles_3.3.1.v20120715-0241-H93-Final.jar
+7f89f9fba000-7f89f9fbe000 r-xs 00029000 08:02 4331725                    /opt/eclipse/plugins/org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar
+7f89f9fbe000-7f89f9fc1000 r-xs 00032000 08:02 10623477                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lint_checks.jar
+7f89f9fc1000-7f89f9fc3000 r-xs 00015000 08:02 10623456                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lint_api.jar
+7f89f9fc3000-7f89f9fc5000 r-xs 0000e000 08:02 4331745                    /opt/eclipse/plugins/org.eclipse.compare.core_3.5.200.I20110208-0800.jar
+7f89f9fc5000-7f89f9fc7000 r-xs 00008000 08:02 4331594                    /opt/eclipse/plugins/org.eclipse.mylyn.monitor.core_3.6.0.v20110608-1400.jar
+7f89f9fc7000-7f89f9fc9000 r-xs 00001000 08:02 4331479                    /opt/eclipse/plugins/org.eclipse.ui.workbench.compatibility_3.2.100.I20110413-1600/compatibility.jar
+7f89f9fc9000-7f89f9fcb000 r-xs 00018000 08:02 4331826                    /opt/eclipse/plugins/org.eclipse.equinox.common_3.6.0.v20110523.jar
+7f89f9fcd000-7f89f9fce000 r-xs 00000000 08:02 3151433                    /home/jaybeepee/.local/share/mime/mime.cache
+7f89f9fce000-7f89f9fcf000 r-xs 00002000 08:02 4331802                    /opt/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry_3.5.0.v20110505/runtime_registry_compatibility.jar
+7f89f9fcf000-7f89f9fd7000 rwxs 00000000 08:02 22023122                   /tmp/hsperfdata_jaybeepee/18897
+7f89f9fd7000-7f89f9fd8000 rwxp 00000000 00:00 0 
+7f89f9fd8000-7f89f9fd9000 r-xp 00000000 00:00 0 
+7f89f9fd9000-7f89f9fdb000 rwxp 00000000 00:00 0 
+7f89f9fdb000-7f89f9fdc000 r-xp 00020000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7f89f9fdc000-7f89f9fde000 rwxp 00021000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7fff2db11000-7fff2db32000 rwxp 00000000 00:00 0                          [stack]
+7fff2dbff000-7fff2dc00000 r-xp 00000000 00:00 0                          [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
+
+VM Arguments:
+jvm_args: -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms1024m -Xmx2048m 
+java_command: /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /opt/eclipse/eclipse -name Eclipse --launcher.library /opt/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so -startup /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.overrideVmargs -exitdata 2a000e -product org.eclipse.epp.package.cpp.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms1024m -Xmx2048m -jar /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+PATH=/home/jaybeepee/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/glassfish-3.1.2/bin:/opt/jdk1.6.0_24/bin/:/opt/glassfish-3.1.2/bin:/opt/jdk1.6.0_24/bin/:/opt/dex2jar-0.0.9.11/
+USERNAME=jaybeepee
+LD_LIBRARY_PATH=/opt/jdk1.6.0_24/jre/lib/amd64/server:/opt/jdk1.6.0_24/jre/lib/amd64:/opt/jdk1.6.0_24/jre/../lib/amd64
+SHELL=/bin/bash
+DISPLAY=:0
+
+Signal Handlers:
+SIGSEGV: [libjvm.so+0x791b30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGBUS: [libjvm.so+0x791b30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGFPE: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGPIPE: SIG_IGN, sa_mask[0]=0x00001000, sa_flags=0x10000000
+SIGXFSZ: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGILL: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
+SIGUSR2: [libjvm.so+0x643780], sa_mask[0]=0x00000000, sa_flags=0x10000004
+SIGHUP: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGINT: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGTERM: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGQUIT: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+
+
+---------------  S Y S T E M  ---------------
+
+OS:wheezy/sid
+
+uname:Linux 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64
+libc:glibc 2.13 NPTL 2.13 
+rlimit: STACK 8192k, CORE 0k, NPROC 63508, NOFILE 4096, AS infinity
+load average:0.29 0.70 0.48
+
+/proc/meminfo:
+MemTotal:        8144924 kB
+MemFree:          588416 kB
+Buffers:         1000788 kB
+Cached:          2883120 kB
+SwapCached:            0 kB
+Active:          3775368 kB
+Inactive:        2908216 kB
+Active(anon):    2801716 kB
+Inactive(anon):    13840 kB
+Active(file):     973652 kB
+Inactive(file):  2894376 kB
+Unevictable:          72 kB
+Mlocked:              72 kB
+SwapTotal:       7811068 kB
+SwapFree:        7811068 kB
+Dirty:              6788 kB
+Writeback:             0 kB
+AnonPages:       2799908 kB
+Mapped:           233688 kB
+Shmem:             15848 kB
+Slab:             644208 kB
+SReclaimable:     608980 kB
+SUnreclaim:        35228 kB
+KernelStack:        4184 kB
+PageTables:        32828 kB
+NFS_Unstable:          0 kB
+Bounce:                0 kB
+WritebackTmp:          0 kB
+CommitLimit:    11883528 kB
+Committed_AS:    5694460 kB
+VmallocTotal:   34359738367 kB
+VmallocUsed:      350036 kB
+VmallocChunk:   34359363068 kB
+HardwareCorrupted:     0 kB
+AnonHugePages:         0 kB
+HugePages_Total:       0
+HugePages_Free:        0
+HugePages_Rsvd:        0
+HugePages_Surp:        0
+Hugepagesize:       2048 kB
+DirectMap4k:      163840 kB
+DirectMap2M:     8183808 kB
+
+
+CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht
+
+Memory: 4k page, physical 8144924k(588416k free), swap 7811068k(7811068k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (19.1-b02) for linux-amd64 JRE (1.6.0_24-b07), built on Feb  2 2011 16:55:54 by "java_re" with gcc 3.2.2 (SuSE Linux)
+
+time: Mon Nov 12 13:47:22 2012
+elapsed time: 144 seconds
+

+ 795 - 0
modules/usrloc_scscf/hs_err_pid19003.log

@@ -0,0 +1,795 @@
+#
+# A fatal error has been detected by the Java Runtime Environment:
+#
+#  SIGSEGV (0xb) at pc=0x00007f4eac566f98, pid=19003, tid=139975610238720
+#
+# JRE version: 6.0_24-b07
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode linux-amd64 compressed oops)
+# Problematic frame:
+# v  ~BufferBlob::vtable chunks
+#
+# If you would like to submit a bug report, please visit:
+#   http://java.sun.com/webapps/bugreport/crash.jsp
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00007f4ea5918000):  JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_in_Java, id=19042, stack(0x00007f4e9c768000,0x00007f4e9c869000)]
+
+siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000003680310
+
+Registers:
+RAX=0x0000000772622cb0, RBX=0x00000007d99ca200, RCX=0x0000000000000000, RDX=0x00000007d9d8d300
+RSP=0x00007f4e9c866908, RBP=0x0000000000000001, RSI=0x0000000003680308, RDI=0x00000007757b1000
+R8 =0x0000000000000001, R9 =0x00000007d99c7ed8, R10=0x00000000006d0061, R11=0x0000000000000000
+R12=0x0000000000000000, R13=0x00000007d99ca200, R14=0x00000007d99c5380, R15=0x00007f4ea5918000
+RIP=0x00007f4eac566f98, EFL=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
+  TRAPNO=0x000000000000000e
+
+Register to memory mapping:
+
+RAX=0x0000000772622cb0
+{instance class} 
+ - klass: {other class}
+
+RBX=0x00000007d99ca200
+
+[error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xe0000000]
+
+Stack: [0x00007f4e9c768000,0x00007f4e9c869000],  sp=0x00007f4e9c866908,  free space=1018k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+v  ~BufferBlob::vtable chunks
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x00000000427d1800 JavaThread "Worker-21" [_thread_blocked, id=19091, stack(0x00007f4e9d35f000,0x00007f4e9d460000)]
+  0x0000000041f66800 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_blocked, id=19090, stack(0x00007f4e97cfd000,0x00007f4e97dfe000)]
+  0x0000000041fb1800 JavaThread "Worker-20" [_thread_blocked, id=19089, stack(0x00007f4e9c155000,0x00007f4e9c256000)]
+  0x0000000042311000 JavaThread "Worker-19" [_thread_blocked, id=19088, stack(0x00007f4e97afb000,0x00007f4e97bfc000)]
+  0x00007f4ea4974000 JavaThread "Worker-18" [_thread_blocked, id=19087, stack(0x00007f4e97eff000,0x00007f4e98000000)]
+  0x0000000042a28800 JavaThread "[ThreadPool Manager] - Idle Thread" daemon [_thread_blocked, id=19071, stack(0x00007f4e96d2e000,0x00007f4e96e2f000)]
+  0x0000000041a38800 JavaThread "Worker-17" [_thread_blocked, id=19060, stack(0x00007f4e973f4000,0x00007f4e974f5000)]
+  0x00000000419ac000 JavaThread "Worker-7" [_thread_blocked, id=19050, stack(0x00007f4e97dfe000,0x00007f4e97eff000)]
+  0x00000000420f5000 JavaThread "Worker-2" [_thread_blocked, id=19045, stack(0x00007f4e9d460000,0x00007f4e9d561000)]
+  0x00007f4ea59a8000 JavaThread "Java indexing" daemon [_thread_blocked, id=19044, stack(0x00007f4e9c869000,0x00007f4e9c96a000)]
+  0x00007f4ea5960000 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=19043, stack(0x00007f4e9c65f000,0x00007f4e9c760000)]
+=>0x00007f4ea5918000 JavaThread "org.eclipse.cdt.internal.ui.text.CReconciler" daemon [_thread_in_Java, id=19042, stack(0x00007f4e9c768000,0x00007f4e9c869000)]
+  0x0000000041c9b800 JavaThread "Worker-JM" [_thread_blocked, id=19027, stack(0x00007f4e9e2ac000,0x00007f4e9e3ad000)]
+  0x00000000418f4000 JavaThread "[Timer] - Main Queue Handler" daemon [_thread_blocked, id=19026, stack(0x00007f4e9e3ad000,0x00007f4e9e4ae000)]
+  0x00000000419c1800 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=19024, stack(0x00007f4e9e5af000,0x00007f4e9e6b0000)]
+  0x00000000425ca800 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=19023, stack(0x00007f4e9e6b0000,0x00007f4e9e7b1000)]
+  0x00000000419b6000 JavaThread "State Data Manager" daemon [_thread_blocked, id=19022, stack(0x00007f4e9e7b1000,0x00007f4e9e8b2000)]
+  0x0000000041cea800 JavaThread "Framework Active Thread" [_thread_blocked, id=19021, stack(0x00007f4e9e8b2000,0x00007f4e9e9b3000)]
+  0x00007f4ea406e000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=19019, stack(0x00007f4ea9c83000,0x00007f4ea9d84000)]
+  0x00007f4ea406b800 JavaThread "CompilerThread1" daemon [_thread_blocked, id=19018, stack(0x00007f4ea9d84000,0x00007f4ea9e85000)]
+  0x00007f4ea4068800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=19017, stack(0x00007f4ea9e85000,0x00007f4ea9f86000)]
+  0x00007f4ea4066800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=19016, stack(0x00007f4ea9f86000,0x00007f4eaa087000)]
+  0x00007f4ea404a800 JavaThread "Finalizer" daemon [_thread_blocked, id=19015, stack(0x00007f4eaa76b000,0x00007f4eaa86c000)]
+  0x00007f4ea4048800 JavaThread "Reference Handler" daemon [_thread_blocked, id=19014, stack(0x00007f4eaa86c000,0x00007f4eaa96d000)]
+  0x00000000416b1000 JavaThread "main" [_thread_in_native, id=19004, stack(0x00007f4eb0398000,0x00007f4eb0499000)]
+
+Other Threads:
+  0x00007f4ea4042000 VMThread [stack: 0x00007f4eaa96d000,0x00007f4eaaa6e000] [id=19013]
+  0x00007f4ea4079000 WatcherThread [stack: 0x00007f4ea9b82000,0x00007f4ea9c83000] [id=19020]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap
+ PSYoungGen      total 568064K, used 119766K [0x00000007d5560000, 0x0000000800000000, 0x0000000800000000)
+  eden space 524416K, 14% used [0x00000007d5560000,0x00000007d9fb5df8,0x00000007f5580000)
+  from space 43648K, 99% used [0x00000007f5580000,0x00000007f801fa80,0x00000007f8020000)
+  to   space 102464K, 0% used [0x00000007f9bf0000,0x00000007f9bf0000,0x0000000800000000)
+ PSOldGen        total 699072K, used 123173K [0x0000000780000000, 0x00000007aaab0000, 0x00000007d5560000)
+  object space 699072K, 17% used [0x0000000780000000,0x00000007878496a0,0x00000007aaab0000)
+ PSPermGen       total 114368K, used 114230K [0x0000000770000000, 0x0000000776fb0000, 0x0000000780000000)
+  object space 114368K, 99% used [0x0000000770000000,0x0000000776f8d970,0x0000000776fb0000)
+
+Dynamic libraries:
+40000000-40009000 r-xp 00000000 08:02 17432867                           /opt/jdk1.6.0_24/bin/java
+40108000-4010a000 rwxp 00008000 08:02 17432867                           /opt/jdk1.6.0_24/bin/java
+416a8000-44ae2000 rwxp 00000000 00:00 0                                  [heap]
+770000000-776fb0000 rwxp 00000000 00:00 0 
+776fb0000-780000000 rwxp 00000000 00:00 0 
+780000000-7aaab0000 rwxp 00000000 00:00 0 
+7aaab0000-7d5560000 rwxp 00000000 00:00 0 
+7d5560000-800000000 rwxp 00000000 00:00 0 
+7f4e918e4000-7f4e918f1000 r-xp 00000000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f4e918f1000-7f4e91af0000 ---p 0000d000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f4e91af0000-7f4e91af1000 r-xp 0000c000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f4e91af1000-7f4e91af2000 rwxp 0000d000 08:02 13900654                   /lib/x86_64-linux-gnu/libudev.so.0.12.0
+7f4e91af2000-7f4e91b34000 r-xp 00000000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f4e91b34000-7f4e91d34000 ---p 00042000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f4e91d34000-7f4e91d35000 r-xp 00042000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f4e91d35000-7f4e91d36000 rwxp 00043000 08:02 13894564                   /lib/x86_64-linux-gnu/libdbus-1.so.3.5.7
+7f4e91d36000-7f4e91d4c000 r-xp 00000000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f4e91d4c000-7f4e91f4b000 ---p 00016000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f4e91f4b000-7f4e91f4c000 r-xp 00015000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f4e91f4c000-7f4e91f4d000 rwxp 00016000 08:02 2097731                    /usr/lib/gvfs/libgvfscommon.so
+7f4e91f4d000-7f4e91f76000 r-xp 00000000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f4e91f76000-7f4e92176000 ---p 00029000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f4e92176000-7f4e92177000 r-xp 00029000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f4e92177000-7f4e92178000 rwxp 0002a000 08:02 2228758                    /usr/lib/gio/modules/libgvfsdbus.so
+7f4e92178000-7f4e92179000 rwxp 00000000 00:00 0 
+7f4e92179000-7f4e9305a000 r-xp 00000000 08:02 3807043                    /usr/share/icons/hicolor/icon-theme.cache
+7f4e9305a000-7f4e969bb000 r-xp 00000000 08:02 3806958                    /usr/share/icons/gnome/icon-theme.cache
+7f4e969bb000-7f4e96a2b000 r-xs 007ed000 08:02 9704824                    /home/jaybeepee/android-sdk/android-sdk-linux/platforms/android-16/data/layoutlib.jar
+7f4e96a2b000-7f4e96a2e000 ---p 00000000 00:00 0 
+7f4e96a2e000-7f4e96b2c000 rwxp 00000000 00:00 0 
+7f4e96b2c000-7f4e96b2f000 ---p 00000000 00:00 0 
+7f4e96b2f000-7f4e96c2d000 rwxp 00000000 00:00 0 
+7f4e96c2d000-7f4e96c30000 ---p 00000000 00:00 0 
+7f4e96c30000-7f4e96d2e000 rwxp 00000000 00:00 0 
+7f4e96d2e000-7f4e96d31000 ---p 00000000 00:00 0 
+7f4e96d31000-7f4e96e2f000 rwxp 00000000 00:00 0 
+7f4e96e2f000-7f4e96e32000 ---p 00000000 00:00 0 
+7f4e96e32000-7f4e96f30000 rwxp 00000000 00:00 0 
+7f4e96f30000-7f4e96f33000 ---p 00000000 00:00 0 
+7f4e96f33000-7f4e97031000 rwxp 00000000 00:00 0 
+7f4e97031000-7f4e97034000 ---p 00000000 00:00 0 
+7f4e97034000-7f4e97132000 rwxp 00000000 00:00 0 
+7f4e97132000-7f4e97135000 ---p 00000000 00:00 0 
+7f4e97135000-7f4e97233000 rwxp 00000000 00:00 0 
+7f4e97233000-7f4e97236000 ---p 00000000 00:00 0 
+7f4e97236000-7f4e97334000 rwxp 00000000 00:00 0 
+7f4e9735f000-7f4e973f4000 r-xs 00929000 08:02 4331979                    /opt/eclipse/plugins/org.eclipse.jdt.ui_3.7.2.v20120109-1427.jar
+7f4e973f4000-7f4e973f7000 ---p 00000000 00:00 0 
+7f4e973f7000-7f4e974f5000 rwxp 00000000 00:00 0 
+7f4e974f5000-7f4e974f8000 ---p 00000000 00:00 0 
+7f4e974f8000-7f4e975f6000 rwxp 00000000 00:00 0 
+7f4e975f6000-7f4e975f9000 ---p 00000000 00:00 0 
+7f4e975f9000-7f4e976f7000 rwxp 00000000 00:00 0 
+7f4e976f7000-7f4e976fa000 ---p 00000000 00:00 0 
+7f4e976fa000-7f4e977f8000 rwxp 00000000 00:00 0 
+7f4e977f8000-7f4e977fb000 ---p 00000000 00:00 0 
+7f4e977fb000-7f4e978f9000 rwxp 00000000 00:00 0 
+7f4e978f9000-7f4e978fc000 ---p 00000000 00:00 0 
+7f4e978fc000-7f4e979fa000 rwxp 00000000 00:00 0 
+7f4e979fa000-7f4e979fd000 ---p 00000000 00:00 0 
+7f4e979fd000-7f4e97afb000 rwxp 00000000 00:00 0 
+7f4e97afb000-7f4e97afe000 ---p 00000000 00:00 0 
+7f4e97afe000-7f4e97bfc000 rwxp 00000000 00:00 0 
+7f4e97bfc000-7f4e97bff000 ---p 00000000 00:00 0 
+7f4e97bff000-7f4e97cfd000 rwxp 00000000 00:00 0 
+7f4e97cfd000-7f4e97d00000 ---p 00000000 00:00 0 
+7f4e97d00000-7f4e97dfe000 rwxp 00000000 00:00 0 
+7f4e97dfe000-7f4e97e01000 ---p 00000000 00:00 0 
+7f4e97e01000-7f4e97eff000 rwxp 00000000 00:00 0 
+7f4e97eff000-7f4e97f02000 ---p 00000000 00:00 0 
+7f4e97f02000-7f4e98000000 rwxp 00000000 00:00 0 
+7f4e98000000-7f4e9ba17000 rwxp 00000000 00:00 0 
+7f4e9ba17000-7f4e9c000000 ---p 00000000 00:00 0 
+7f4e9c00b000-7f4e9c02c000 r-xs 00178000 08:02 4331510                    /opt/eclipse/plugins/org.eclipse.mylyn.tasks.ui_3.6.5.v20120215-0100.jar
+7f4e9c02c000-7f4e9c054000 r-xs 00214000 08:02 4331695                    /opt/eclipse/plugins/org.eclipse.ui.ide_3.7.0.v20110928-1505.jar
+7f4e9c054000-7f4e9c057000 ---p 00000000 00:00 0 
+7f4e9c057000-7f4e9c155000 rwxp 00000000 00:00 0 
+7f4e9c155000-7f4e9c158000 ---p 00000000 00:00 0 
+7f4e9c158000-7f4e9c256000 rwxp 00000000 00:00 0 
+7f4e9c256000-7f4e9c2b6000 rwxs 00000000 00:04 2981906                    /SYSV00000000 (deleted)
+7f4e9c2c3000-7f4e9c321000 r-xs 00696000 08:02 7345127                    /home/jaybeepee/android-sdk/android-sdk-linux/platforms/android-13/data/layoutlib.jar
+7f4e9c321000-7f4e9c36b000 r-xs 003c3000 08:02 4332269                    /opt/eclipse/plugins/org.eclipse.pde.ui_3.6.100.v20120103_r372.jar
+7f4e9c377000-7f4e9c3b1000 r-xp 00000000 08:02 3279503                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
+7f4e9c3b1000-7f4e9c3ed000 r-xp 00000000 08:02 3279504                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
+7f4e9c3ed000-7f4e9c43a000 r-xp 00000000 08:02 3279502                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
+7f4e9c43a000-7f4e9c48c000 r-xp 00000000 08:02 3279505                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
+7f4e9c48e000-7f4e9c524000 r-xp 00000000 08:02 3279494                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
+7f4e9c524000-7f4e9c5ba000 r-xp 00000000 08:02 3279496                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
+7f4e9c5ba000-7f4e9c65f000 r-xp 00000000 08:02 3279493                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
+7f4e9c65f000-7f4e9c662000 ---p 00000000 00:00 0 
+7f4e9c662000-7f4e9c760000 rwxp 00000000 00:00 0 
+7f4e9c760000-7f4e9c768000 r-xs 00115000 08:02 17436760                   /opt/jdk1.6.0_24/jre/lib/resources.jar
+7f4e9c768000-7f4e9c76b000 ---p 00000000 00:00 0 
+7f4e9c76b000-7f4e9c869000 rwxp 00000000 00:00 0 
+7f4e9c869000-7f4e9c86c000 ---p 00000000 00:00 0 
+7f4e9c86c000-7f4e9c96a000 rwxp 00000000 00:00 0 
+7f4e9c96a000-7f4e9c96e000 r-xp 00000000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7f4e9c96e000-7f4e9cb6d000 ---p 00004000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7f4e9cb6d000-7f4e9cb6e000 rwxp 00003000 08:02 4985237                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/44/1/.cp/os/linux/x86_64/libspawner.so
+7f4e9cb73000-7f4e9cb9a000 r-xs 001dd000 08:02 4331820                    /opt/eclipse/plugins/org.eclipse.egit.ui_1.3.0.201202151440-r.jar
+7f4e9cb9a000-7f4e9cbcf000 r-xs 00571000 08:02 4330718                    /opt/eclipse/plugins/org.eclipse.jdt.core_3.7.3.v_OTDT_r202_201202051448.jar
+7f4e9cbd5000-7f4e9cc07000 r-xs 0062f000 08:02 4329919                    /opt/eclipse/plugins/com.android.ide.eclipse.adt_20.0.1.v201207132230-403220.jar
+7f4e9cc0a000-7f4e9cc24000 r-xs 0016d000 08:02 4331503                    /opt/eclipse/plugins/org.eclipse.jgit_1.3.0.201202151440-r.jar
+7f4e9cc24000-7f4e9cc38000 r-xs 000f3000 08:02 4331565                    /opt/eclipse/plugins/org.eclipse.jface_3.7.0.v20110928-1505.jar
+7f4e9cc7a000-7f4e9ccc1000 r-xs 003b3000 08:02 4331552                    /opt/eclipse/plugins/org.eclipse.ui.workbench_3.7.1.v20120104-1859.jar
+7f4e9ccc1000-7f4e9ccd9000 r-xs 00127000 08:02 4331791                    /opt/eclipse/plugins/org.apache.xerces_2.9.0.v201101211617.jar
+7f4e9ccd9000-7f4e9cce8000 r-xs 0005f000 08:02 10623564                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/propertysheet.jar
+7f4e9cce8000-7f4e9ccf2000 r-xs 00085000 08:02 4331378                    /opt/eclipse/plugins/org.eclipse.team.cvs.core_3.3.400.I20110510-0800.jar
+7f4e9ccf9000-7f4e9cd42000 r-xs 0040a000 08:02 4331587                    /opt/eclipse/plugins/org.eclipse.cdt.core_5.3.2.201202111925.jar
+7f4e9cd42000-7f4e9cd54000 r-xs 000be000 08:02 4332135                    /opt/eclipse/plugins/org.eclipse.wst.server.ui_1.3.0.v20120210_1439.jar
+7f4e9cd57000-7f4e9cd66000 r-xs 000f3000 08:02 10623486                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lombok-ast-0.2.jar
+7f4e9cd66000-7f4e9cd72000 r-xs 00076000 08:02 4329856                    /opt/eclipse/plugins/org.jboss.ide.eclipse.as.ui_2.3.1.v20120715-0243-H142-Final.jar
+7f4e9cd72000-7f4e9cdc9000 r-xs 004b4000 08:02 4331710                    /opt/eclipse/plugins/org.eclipse.cdt.ui_5.3.2.201202111925.jar
+7f4e9cdde000-7f4e9cdf0000 r-xs 000db000 08:02 4332165                    /opt/eclipse/plugins/org.eclipse.wst.xml.ui_1.1.202.v201112071516.jar
+7f4e9cdf0000-7f4e9cdf6000 r-xs 00054000 08:02 10624243                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/sdklib.jar
+7f4e9cdf6000-7f4e9cdfe000 r-xs 0005f000 08:02 4332259                    /opt/eclipse/plugins/org.eclipse.pde.api.tools.ui_1.0.301.v20110803_r371.jar
+7f4e9cdfe000-7f4e9ce05000 r-xs 00094000 08:02 17436700                   /opt/jdk1.6.0_24/jre/lib/jsse.jar
+7f4e9ce09000-7f4e9ce0f000 r-xs 00034000 08:02 4332124                    /opt/eclipse/plugins/org.eclipse.wst.jsdt.debug.ui_1.0.101.v201201112313.jar
+7f4e9ce0f000-7f4e9ce15000 r-xp 00000000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f4e9ce15000-7f4e9d014000 ---p 00006000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f4e9d014000-7f4e9d015000 r-xp 00005000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f4e9d015000-7f4e9d016000 rwxp 00006000 08:02 2623722                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+7f4e9d018000-7f4e9d021000 r-xs 0005e000 08:02 4331974                    /opt/eclipse/plugins/org.eclipse.jdt.junit_3.7.0.v20110928-1453.jar
+7f4e9d021000-7f4e9d03a000 r-xs 00133000 08:02 4331972                    /opt/eclipse/plugins/org.eclipse.jdt.debug.ui_3.6.1.v20111006_r372.jar
+7f4e9d03a000-7f4e9d04a000 r-xs 000db000 08:02 4331310                    /opt/eclipse/plugins/org.eclipse.ant.ui_3.5.101.v20120110-1739.jar
+7f4e9d04a000-7f4e9d04e000 r-xs 0001e000 08:02 4331466                    /opt/eclipse/plugins/org.eclipse.ui.externaltools_3.2.0.v20111007_r372.jar
+7f4e9d04e000-7f4e9d067000 r-xs 000ed000 08:02 4331580                    /opt/eclipse/plugins/org.eclipse.cdt.debug.ui_7.1.2.201202111925.jar
+7f4e9d067000-7f4e9d06a000 r-xs 00013000 08:02 17436698                   /opt/jdk1.6.0_24/jre/lib/jce.jar
+7f4e9d06c000-7f4e9d09e000 r-xs 00244000 08:02 4331549                    /opt/eclipse/plugins/org.eclipse.debug.ui_3.7.102.v20111129-1423_r372.jar
+7f4e9d09e000-7f4e9d0aa000 r-xp 00000000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7f4e9d0aa000-7f4e9d1aa000 ---p 0000c000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7f4e9d1aa000-7f4e9d1ab000 rwxp 0000c000 08:02 4594468                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-cairo-gtk-3740.so
+7f4e9d1ab000-7f4e9d1ae000 rwxs 00000000 00:04 2949137                    /SYSV00000000 (deleted)
+7f4e9d1b2000-7f4e9d1bb000 r-xs 00058000 08:02 4331726                    /opt/eclipse/plugins/org.eclipse.team.core_3.6.0.I20110525-0800.jar
+7f4e9d1bb000-7f4e9d1c2000 r-xs 00052000 08:02 4331309                    /opt/eclipse/plugins/org.eclipse.jdt.apt.core_3.3.500.v20110420-1015.jar
+7f4e9d1c2000-7f4e9d1c9000 r-xs 00048000 08:02 4331867                    /opt/eclipse/plugins/org.eclipse.ltk.core.refactoring_3.5.201.r372_v20111101-0700.jar
+7f4e9d1c9000-7f4e9d1d1000 r-xs 0004d000 08:02 4331708                    /opt/eclipse/plugins/org.eclipse.debug.core_3.7.1.v20111129-2031.jar
+7f4e9d1d2000-7f4e9d1d7000 r-xs 00028000 08:02 10624215                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/httpcore-4.1.jar
+7f4e9d1d7000-7f4e9d1df000 r-xs 0004e000 08:02 10624174                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/httpclient-4.1.1.jar
+7f4e9d1df000-7f4e9d1e1000 r-xs 00015000 08:02 10623456                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lint_api.jar
+7f4e9d1e1000-7f4e9d1e5000 r-xs 0007f000 08:02 10623340                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/assetstudio.jar
+7f4e9d1eb000-7f4e9d1f5000 r-xs 00076000 08:02 4332104                    /opt/eclipse/plugins/org.eclipse.wst.css.core_1.1.501.v201111292150.jar
+7f4e9d1f5000-7f4e9d1ff000 r-xs 00062000 08:02 4332138                    /opt/eclipse/plugins/org.eclipse.wst.sse.core_1.1.602.v201112071516.jar
+7f4e9d1ff000-7f4e9d213000 r-xs 0024b000 08:02 4331792                    /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f.jar
+7f4e9d213000-7f4e9d217000 r-xs 0001a000 08:02 4332177                    /opt/eclipse/plugins/org.eclipse.wst.xsl.debug.ui_1.0.200.v201101281837.jar
+7f4e9d219000-7f4e9d227000 r-xs 000a6000 08:02 4332164                    /opt/eclipse/plugins/org.eclipse.wst.xml.core_1.1.602.v201201091944.jar
+7f4e9d227000-7f4e9d23a000 r-xs 000dd000 08:02 4331512                    /opt/eclipse/plugins/org.eclipse.jface.text_3.7.2.v20111213-1208.jar
+7f4e9d23a000-7f4e9d23e000 r-xs 00033000 08:02 4331713                    /opt/eclipse/plugins/org.eclipse.cdt.launch_7.0.0.201202111925.jar
+7f4e9d240000-7f4e9d242000 r-xs 0000b000 08:02 4331775                    /opt/eclipse/plugins/org.eclipse.mylyn.monitor.ui_3.6.0.v20110608-1400.jar
+7f4e9d243000-7f4e9d24f000 r-xs 00081000 08:02 4331763                    /opt/eclipse/plugins/org.eclipse.ui.editors_3.7.0.v20110928-1504.jar
+7f4e9d24f000-7f4e9d25b000 r-xs 00083000 08:02 4331685                    /opt/eclipse/plugins/org.eclipse.ui.workbench.texteditor_3.7.0.v20110928-1504.jar
+7f4e9d25b000-7f4e9d25e000 ---p 00000000 00:00 0 
+7f4e9d25e000-7f4e9d35c000 rwxp 00000000 00:00 0 
+7f4e9d35d000-7f4e9d35f000 r-xs 00007000 08:02 10623312                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/rule_api.jar
+7f4e9d35f000-7f4e9d362000 ---p 00000000 00:00 0 
+7f4e9d362000-7f4e9d460000 rwxp 00000000 00:00 0 
+7f4e9d460000-7f4e9d463000 ---p 00000000 00:00 0 
+7f4e9d463000-7f4e9d561000 rwxp 00000000 00:00 0 
+7f4e9d561000-7f4e9d56c000 r-xp 00000000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7f4e9d56c000-7f4e9d66c000 ---p 0000b000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7f4e9d66c000-7f4e9d66d000 rwxp 0000b000 08:02 4594447                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-atk-gtk-3740.so
+7f4e9d66e000-7f4e9d670000 r-xs 00001000 08:02 4331479                    /opt/eclipse/plugins/org.eclipse.ui.workbench.compatibility_3.2.100.I20110413-1600/compatibility.jar
+7f4e9d673000-7f4e9d676000 r-xs 00014000 08:02 4332122                    /opt/eclipse/plugins/org.eclipse.wst.jsdt.debug.rhino.ui_1.0.1.v201201112313.jar
+7f4e9d67a000-7f4e9d67f000 r-xs 00025000 08:02 4329860                    /opt/eclipse/plugins/org.jboss.tools.common.el.core_3.3.1.v20120715-0209-H81-Final.jar
+7f4e9d67f000-7f4e9d681000 r-xp 00000000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7f4e9d681000-7f4e9d780000 ---p 00002000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7f4e9d780000-7f4e9d781000 rwxp 00001000 08:02 4594456                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/84/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
+7f4e9d781000-7f4e9d784000 r-xs 0001f000 08:02 4329859                    /opt/eclipse/plugins/org.jboss.tools.common_3.3.1.v20120715-0209-H81-Final.jar
+7f4e9d784000-7f4e9d787000 r-xs 00010000 08:02 4329895                    /opt/eclipse/plugins/org.jboss.tools.jst.text.ext_3.3.1.v20120715-0241-H93-Final.jar
+7f4e9d787000-7f4e9d7a5000 r-xs 00151000 08:02 10624160                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/guava-10.0.1.jar
+7f4e9d7a5000-7f4e9d7a9000 r-xs 00020000 08:02 10624039                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/commons-compress-1.0.jar
+7f4e9d7a9000-7f4e9d7ad000 r-xp 00000000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f4e9d7ad000-7f4e9d9ad000 ---p 00004000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f4e9d9ad000-7f4e9d9ae000 r-xp 00004000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f4e9d9ae000-7f4e9d9af000 rwxp 00005000 08:02 2623728                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
+7f4e9d9af000-7f4e9da5f000 r-xp 00000000 08:02 3279497                    /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+7f4e9da5f000-7f4e9da61000 r-xp 00000000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f4e9da61000-7f4e9dc60000 ---p 00002000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f4e9dc60000-7f4e9dc61000 r-xp 00001000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f4e9dc61000-7f4e9dc62000 rwxp 00002000 08:02 2623833                    /usr/lib/x86_64-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so
+7f4e9dc62000-7f4e9dc63000 r-xs 00000000 08:02 9175124                    /var/cache/fontconfig/c05880de57d1f5e948fdfacc138775d9-le64.cache-3
+7f4e9dc63000-7f4e9dc6c000 r-xs 00000000 08:02 9175121                    /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-3
+7f4e9dc6c000-7f4e9dc6e000 r-xs 00000000 08:02 9175122                    /var/cache/fontconfig/99e8ed0e538f840c565b6ed5dad60d56-le64.cache-3
+7f4e9dc6e000-7f4e9dc71000 r-xs 00000000 08:02 9186895                    /var/cache/fontconfig/e383d7ea5fbe662a33d9b44caf393297-le64.cache-3
+7f4e9dc71000-7f4e9dc75000 r-xs 00000000 08:02 9175108                    /var/cache/fontconfig/2cd17615ca594fa2959ae173292e504c-le64.cache-3
+7f4e9dc75000-7f4e9dc76000 r-xs 00000000 08:02 9175132                    /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-le64.cache-3
+7f4e9dc76000-7f4e9dc7b000 r-xs 00000000 08:02 9175118                    /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-le64.cache-3
+7f4e9dc7b000-7f4e9dc7c000 r-xs 00000000 08:02 9175112                    /var/cache/fontconfig/4c73fe0c47614734b17d736dbde7580a-le64.cache-3
+7f4e9dc7c000-7f4e9dc7d000 r-xs 00000000 08:02 9175105                    /var/cache/fontconfig/0d8c3b2ac0904cb8a57a757ad11a4a08-le64.cache-3
+7f4e9dc7d000-7f4e9dc7e000 r-xs 00000000 08:02 9175116                    /var/cache/fontconfig/6a53c69dea097a2d716e069445527da8-le64.cache-3
+7f4e9dc7e000-7f4e9dc84000 r-xs 00000000 08:02 9175123                    /var/cache/fontconfig/a755afe4a08bf5b97852ceb7400b47bc-le64.cache-3
+7f4e9dc84000-7f4e9dc8a000 r-xs 00000000 08:02 9175113                    /var/cache/fontconfig/515ca1ebc4b18308bea979be5704f9db-le64.cache-3
+7f4e9dc8a000-7f4e9dc93000 r-xs 00000000 08:02 9175117                    /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-le64.cache-3
+7f4e9dc93000-7f4e9dca3000 r-xs 00000000 08:02 9175106                    /var/cache/fontconfig/0f34bcd4b6ee430af32735b75db7f02b-le64.cache-3
+7f4e9dca3000-7f4e9dcd1000 r-xs 00000000 08:02 9186874                    /var/cache/fontconfig/365b55f210c0a22e9a19e35191240f32-le64.cache-3
+7f4e9dcd1000-7f4e9dce1000 r-xs 00000000 08:02 9175128                    /var/cache/fontconfig/d52a8644073d54c13679302ca1180695-le64.cache-3
+7f4e9dce1000-7f4e9dce6000 r-xp 00000000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f4e9dce6000-7f4e9dee5000 ---p 00005000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f4e9dee5000-7f4e9dee6000 r-xp 00004000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f4e9dee6000-7f4e9dee7000 rwxp 00005000 08:02 2101199                    /usr/lib/libXtst.so.6.1.0
+7f4e9dee7000-7f4e9deea000 r-xs 00019000 08:02 4331703                    /opt/eclipse/plugins/org.eclipse.core.filebuffers_3.5.200.v20110928-1504.jar
+7f4e9deea000-7f4e9def6000 r-xs 000ba000 08:02 4331493                    /opt/eclipse/plugins/org.eclipse.core.resources_3.7.101.v20120125-1505.jar
+7f4e9def6000-7f4e9defe000 r-xs 00000000 08:02 9186840                    /var/cache/fontconfig/153bb866d4d26e7cd19eee2129f8d8d2-le64.cache-3
+7f4e9defe000-7f4e9df09000 r-xs 00000000 08:02 9175131                    /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-3
+7f4e9df09000-7f4e9df0d000 r-xs 00000000 08:02 9186807                    /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-3
+7f4e9df0d000-7f4e9df81000 r-xp 00000000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7f4e9df81000-7f4e9e080000 ---p 00074000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7f4e9e080000-7f4e9e083000 rwxp 00073000 08:02 4594437                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-pi-gtk-3740.so
+7f4e9e083000-7f4e9e085000 rwxp 00000000 00:00 0 
+7f4e9e085000-7f4e9e103000 r-xp 00000000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7f4e9e103000-7f4e9e202000 ---p 0007e000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7f4e9e202000-7f4e9e209000 rwxp 0007d000 08:02 4594436                    /opt/eclipse/configuration/org.eclipse.osgi/bundles/271/1/.cp/libswt-gtk-3740.so
+7f4e9e209000-7f4e9e20c000 rwxp 00000000 00:00 0 
+7f4e9e20c000-7f4e9e20d000 r-xs 00000000 08:02 10623854                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/androidprefs.jar
+7f4e9e20d000-7f4e9e20e000 r-xs 00259000 08:02 4329921                    /opt/eclipse/plugins/com.android.ide.eclipse.base_20.0.1.v201207132230-403220.jar
+7f4e9e20e000-7f4e9e210000 r-xs 00016000 08:02 4332203                    /opt/eclipse/plugins/org.eclipse.m2e.launching_1.0.200.20111228-1245.jar
+7f4e9e215000-7f4e9e251000 r-xs 00629000 08:02 4331825                    /opt/eclipse/plugins/com.ibm.icu_4.4.2.v20110823.jar
+7f4e9e251000-7f4e9e254000 r-xs 00032000 08:02 10623477                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/lint_checks.jar
+7f4e9e254000-7f4e9e258000 r-xs 00013000 08:02 4331794                    /opt/eclipse/plugins/org.eclipse.ui.views_3.6.0.v20110928-1505.jar
+7f4e9e258000-7f4e9e261000 r-xs 000fc000 08:02 4329848                    /opt/eclipse/plugins/org.jboss.ide.eclipse.as.core_2.3.1.v20120715-0243-H142-Final.jar
+7f4e9e261000-7f4e9e266000 r-xs 00048000 08:02 10624377                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/931/1/.cp/dom4j-1.6.1.jar
+7f4e9e268000-7f4e9e26c000 r-xs 00017000 08:02 4331488                    /opt/eclipse/plugins/org.eclipse.core.commands_3.6.0.I20110111-0800.jar
+7f4e9e26c000-7f4e9e26f000 r-xs 00023000 08:02 4331312                    /opt/eclipse/plugins/org.eclipse.jdt.compiler.apt_1.0.400.v0110816-0800.jar
+7f4e9e26f000-7f4e9e270000 r-xs 00004000 08:02 4331567                    /opt/eclipse/plugins/org.eclipse.cdt.core.linux.x86_64_5.2.0.201202111925.jar
+7f4e9e272000-7f4e9e273000 r-xs 00002000 08:02 4331783                    /opt/eclipse/plugins/org.eclipse.cdt.core.linux_5.2.0.201202111925.jar
+7f4e9e273000-7f4e9e274000 r-xs 00007000 08:02 4331307                    /opt/eclipse/plugins/org.eclipse.jdt.apt.pluggable.core_1.0.400.v20110305-1450.jar
+7f4e9e275000-7f4e9e276000 r-xs 00004000 08:02 4331525                    /opt/eclipse/plugins/org.eclipse.swt_3.7.2.v3740f.jar
+7f4e9e276000-7f4e9e27b000 r-xs 00038000 08:02 4331543                    /opt/eclipse/plugins/org.eclipse.text_3.5.101.v20110928-1504.jar
+7f4e9e27b000-7f4e9e27e000 r-xs 00013000 08:02 4331698                    /opt/eclipse/plugins/org.eclipse.core.expressions_3.4.300.v20110228.jar
+7f4e9e27e000-7f4e9e280000 r-xs 00011000 08:02 4331824                    /opt/eclipse/plugins/org.eclipse.equinox.util_1.0.300.v20110502.jar
+7f4e9e283000-7f4e9e287000 r-xs 0001d000 08:02 4331548                    /opt/eclipse/plugins/org.eclipse.cdt.codan.core_2.0.0.201202111925.jar
+7f4e9e287000-7f4e9e289000 r-xs 00005000 08:02 10624230                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/httpmime-4.1.1.jar
+7f4e9e289000-7f4e9e28b000 r-xs 00009000 08:02 10623909                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/common.jar
+7f4e9e28c000-7f4e9e29b000 r-xs 000a8000 08:02 8789315                    /opt/eclipse/plugins/org.hibernate.eclipse.console_3.5.1.v20120715-0252-H98-Final/org.hibernate.eclipse.console.jar
+7f4e9e29b000-7f4e9e2a8000 r-xs 000af000 08:02 8000915                    /home/jaybeepee/android-sdk/android-sdk-linux/platform-tools/lib/dx.jar
+7f4e9e2a8000-7f4e9e2aa000 r-xs 0000e000 08:02 4331745                    /opt/eclipse/plugins/org.eclipse.compare.core_3.5.200.I20110208-0800.jar
+7f4e9e2aa000-7f4e9e2ac000 r-xs 00009000 08:02 4331833                    /opt/eclipse/plugins/org.eclipse.cdt.codan.core.cxx_1.0.0.201202111925.jar
+7f4e9e2ac000-7f4e9e2af000 ---p 00000000 00:00 0 
+7f4e9e2af000-7f4e9e3ad000 rwxp 00000000 00:00 0 
+7f4e9e3ad000-7f4e9e3b0000 ---p 00000000 00:00 0 
+7f4e9e3b0000-7f4e9e4ae000 rwxp 00000000 00:00 0 
+7f4e9e4ae000-7f4e9e4b1000 ---p 00000000 00:00 0 
+7f4e9e4b1000-7f4e9e5af000 rwxp 00000000 00:00 0 
+7f4e9e5af000-7f4e9e5b2000 ---p 00000000 00:00 0 
+7f4e9e5b2000-7f4e9e6b0000 rwxp 00000000 00:00 0 
+7f4e9e6b0000-7f4e9e6b3000 ---p 00000000 00:00 0 
+7f4e9e6b3000-7f4e9e7b1000 rwxp 00000000 00:00 0 
+7f4e9e7b1000-7f4e9e7b4000 ---p 00000000 00:00 0 
+7f4e9e7b4000-7f4e9e8b2000 rwxp 00000000 00:00 0 
+7f4e9e8b2000-7f4e9e8b5000 ---p 00000000 00:00 0 
+7f4e9e8b5000-7f4e9e9b3000 rwxp 00000000 00:00 0 
+7f4e9e9b3000-7f4e9e9ba000 r-xp 00000000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7f4e9e9ba000-7f4e9eab9000 ---p 00007000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7f4e9eab9000-7f4e9eabb000 rwxp 00006000 08:02 17436508                   /opt/jdk1.6.0_24/jre/lib/amd64/libnio.so
+7f4e9eabb000-7f4e9eace000 r-xp 00000000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7f4e9eace000-7f4e9ebcf000 ---p 00013000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7f4e9ebcf000-7f4e9ebd2000 rwxp 00014000 08:02 17436507                   /opt/jdk1.6.0_24/jre/lib/amd64/libnet.so
+7f4e9ebd2000-7f4e9ebe6000 r-xs 0013a000 08:02 4331531                    /opt/eclipse/plugins/org.eclipse.osgi_3.7.2.v20120110-1415.jar
+7f4e9ebe6000-7f4e9ec46000 rwxs 00000000 00:04 2916367                    /SYSV00000000 (deleted)
+7f4e9ec46000-7f4e9eca9000 rwxp 00000000 00:00 0 
+7f4e9eca9000-7f4e9ecac000 r-xp 00000000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f4e9ecac000-7f4e9eeac000 ---p 00003000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f4e9eeac000-7f4e9eead000 r-xp 00003000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f4e9eead000-7f4e9eeae000 rwxp 00004000 08:02 2623721                    /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+7f4e9eeae000-7f4e9eed9000 r-xp 00000000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f4e9eed9000-7f4e9f0d8000 ---p 0002b000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f4e9f0d8000-7f4e9f0d9000 r-xp 0002a000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f4e9f0d9000-7f4e9f0da000 rwxp 0002b000 08:02 2229302                    /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so
+7f4e9f0da000-7f4e9f0e0000 r-xp 00000000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f4e9f0e0000-7f4e9f2df000 ---p 00006000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f4e9f2df000-7f4e9f2e0000 r-xp 00005000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f4e9f2e0000-7f4e9f2e1000 rwxp 00006000 08:02 2105860                    /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
+7f4e9f2e1000-7f4e9f30c000 r-xp 00000000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f4e9f30c000-7f4e9f50b000 ---p 0002b000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f4e9f50b000-7f4e9f50c000 r-xp 0002a000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f4e9f50c000-7f4e9f50d000 rwxp 0002b000 08:02 2099562                    /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.5
+7f4e9f50d000-7f4e9f515000 r-xp 00000000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f4e9f515000-7f4e9f715000 ---p 00008000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f4e9f715000-7f4e9f716000 r-xp 00008000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f4e9f716000-7f4e9f717000 rwxp 00009000 08:02 2101817                    /usr/lib/libltdl.so.7.3.0
+7f4e9f717000-7f4e9f727000 r-xp 00000000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f4e9f727000-7f4e9f926000 ---p 00010000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f4e9f926000-7f4e9f927000 r-xp 0000f000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f4e9f927000-7f4e9f928000 rwxp 00010000 08:02 2105953                    /usr/lib/x86_64-linux-gnu/libtdb.so.1.2.9
+7f4e9f928000-7f4e9f92f000 r-xp 00000000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f4e9f92f000-7f4e9fb2e000 ---p 00007000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f4e9fb2e000-7f4e9fb2f000 r-xp 00006000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f4e9fb2f000-7f4e9fb30000 rwxp 00007000 08:02 2099558                    /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.4
+7f4e9fb30000-7f4e9fb3f000 r-xp 00000000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f4e9fb3f000-7f4e9fd3e000 ---p 0000f000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f4e9fd3e000-7f4e9fd3f000 r-xp 0000e000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f4e9fd3f000-7f4e9fd40000 rwxp 0000f000 08:02 2098171                    /usr/lib/libcanberra.so.0.2.5
+7f4e9fd40000-7f4e9fd44000 r-xp 00000000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f4e9fd44000-7f4e9ff43000 ---p 00004000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f4e9ff43000-7f4e9ff44000 r-xp 00003000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f4e9ff44000-7f4e9ff45000 rwxp 00004000 08:02 2098181                    /usr/lib/libcanberra-gtk.so.0.1.8
+7f4e9ff45000-7f4e9ff4a000 r-xp 00000000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f4e9ff4a000-7f4ea0149000 ---p 00005000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f4ea0149000-7f4ea014a000 r-xp 00004000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f4ea014a000-7f4ea014b000 rwxp 00005000 08:02 2228721                    /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
+7f4ea014b000-7f4ea016a000 r-xp 00000000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f4ea016a000-7f4ea036a000 ---p 0001f000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f4ea036a000-7f4ea036c000 r-xp 0001f000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f4ea036c000-7f4ea036d000 rwxp 00021000 08:02 2105642                    /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.20209.1
+7f4ea036d000-7f4ea079f000 r-xp 00000000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f4ea079f000-7f4ea099e000 ---p 00432000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f4ea099e000-7f4ea09a5000 r-xp 00431000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f4ea09a5000-7f4ea09a9000 rwxp 00438000 08:02 2099545                    /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.6
+7f4ea09a9000-7f4ea09ab000 rwxp 00000000 00:00 0 
+7f4ea09ab000-7f4ea09b0000 r-xp 00000000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f4ea09b0000-7f4ea0baf000 ---p 00005000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f4ea0baf000-7f4ea0bb0000 r-xp 00004000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f4ea0bb0000-7f4ea0bb1000 rwxp 00005000 08:02 2105595                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
+7f4ea0bb1000-7f4ea0bb3000 r-xp 00000000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f4ea0bb3000-7f4ea0db2000 ---p 00002000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f4ea0db2000-7f4ea0db3000 r-xp 00001000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f4ea0db3000-7f4ea0db4000 rwxp 00002000 08:02 2105579                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
+7f4ea0db4000-7f4ea0dcf000 r-xp 00000000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f4ea0dcf000-7f4ea0fce000 ---p 0001b000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f4ea0fce000-7f4ea0fcf000 r-xp 0001a000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f4ea0fcf000-7f4ea0fd0000 rwxp 0001b000 08:02 2105990                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
+7f4ea0fd0000-7f4ea0fd7000 r-xp 00000000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f4ea0fd7000-7f4ea11d7000 ---p 00007000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f4ea11d7000-7f4ea11d8000 r-xp 00007000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f4ea11d8000-7f4ea11d9000 rwxp 00008000 08:02 2105978                    /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
+7f4ea11d9000-7f4ea11db000 r-xp 00000000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f4ea11db000-7f4ea13da000 ---p 00002000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f4ea13da000-7f4ea13db000 r-xp 00001000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f4ea13db000-7f4ea13dc000 rwxp 00002000 08:02 2105984                    /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
+7f4ea13dc000-7f4ea1402000 r-xp 00000000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f4ea1402000-7f4ea1602000 ---p 00026000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f4ea1602000-7f4ea1603000 r-xp 00026000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f4ea1603000-7f4ea1604000 rwxp 00027000 08:02 13897615                   /lib/x86_64-linux-gnu/libpng12.so.0.46.0
+7f4ea1604000-7f4ea1672000 r-xp 00000000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f4ea1672000-7f4ea1872000 ---p 0006e000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f4ea1872000-7f4ea1877000 r-xp 0006e000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f4ea1877000-7f4ea1878000 rwxp 00073000 08:02 2105897                    /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.22.2
+7f4ea1878000-7f4ea189f000 r-xp 00000000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f4ea189f000-7f4ea1a9f000 ---p 00027000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f4ea1a9f000-7f4ea1aa1000 r-xp 00027000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f4ea1aa1000-7f4ea1aa2000 rwxp 00029000 08:02 13897588                   /lib/x86_64-linux-gnu/libexpat.so.1.5.2
+7f4ea1aa2000-7f4ea1ab9000 r-xp 00000000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f4ea1ab9000-7f4ea1cb9000 ---p 00017000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f4ea1cb9000-7f4ea1cba000 r-xp 00017000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f4ea1cba000-7f4ea1cbb000 rwxp 00018000 08:02 13897367                   /lib/x86_64-linux-gnu/libresolv-2.13.so
+7f4ea1cbb000-7f4ea1cbd000 rwxp 00000000 00:00 0 
+7f4ea1cbd000-7f4ea1cd9000 r-xp 00000000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f4ea1cd9000-7f4ea1ed8000 ---p 0001c000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f4ea1ed8000-7f4ea1ed9000 r-xp 0001b000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f4ea1ed9000-7f4ea1eda000 rwxp 0001c000 08:02 13897430                   /lib/x86_64-linux-gnu/libselinux.so.1
+7f4ea1eda000-7f4ea1edb000 rwxp 00000000 00:00 0 
+7f4ea1edb000-7f4ea1ef2000 r-xp 00000000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f4ea1ef2000-7f4ea20f1000 ---p 00017000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f4ea20f1000-7f4ea20f2000 r-xp 00016000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f4ea20f2000-7f4ea20f3000 rwxp 00017000 08:02 13897447                   /lib/x86_64-linux-gnu/libz.so.1.2.3.4
+7f4ea20f3000-7f4ea20f6000 r-xp 00000000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f4ea20f6000-7f4ea22f5000 ---p 00003000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f4ea22f5000-7f4ea22f6000 r-xp 00002000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f4ea22f6000-7f4ea22f7000 rwxp 00003000 08:02 2105773                    /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.3000.0
+7f4ea22f7000-7f4ea2389000 r-xp 00000000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f4ea2389000-7f4ea2588000 ---p 00092000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f4ea2588000-7f4ea258e000 r-xp 00091000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f4ea258e000-7f4ea258f000 rwxp 00097000 08:02 2097543                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.6.2
+7f4ea258f000-7f4ea25b9000 r-xp 00000000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f4ea25b9000-7f4ea27b8000 ---p 0002a000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f4ea27b8000-7f4ea27b9000 r-xp 00029000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f4ea27b9000-7f4ea27ba000 rwxp 0002a000 08:02 2105875                    /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.2903.0
+7f4ea27ba000-7f4ea28ed000 r-xp 00000000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f4ea28ed000-7f4ea2aed000 ---p 00133000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f4ea2aed000-7f4ea2aee000 r-xp 00133000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f4ea2aee000-7f4ea2af2000 rwxp 00134000 08:02 2105575                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
+7f4ea2af2000-7f4ea2bab000 r-xp 00000000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f4ea2bab000-7f4ea2daa000 ---p 000b9000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f4ea2daa000-7f4ea2dac000 r-xp 000b8000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f4ea2dac000-7f4ea2dad000 rwxp 000ba000 08:02 2105679                    /usr/lib/x86_64-linux-gnu/libcairo.so.2.11000.2
+7f4ea2dad000-7f4ea2db0000 rwxp 00000000 00:00 0 
+7f4ea2db0000-7f4ea2db5000 r-xp 00000000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f4ea2db5000-7f4ea2fb4000 ---p 00005000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f4ea2fb4000-7f4ea2fb5000 r-xp 00004000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f4ea2fb5000-7f4ea2fb6000 rwxp 00005000 08:02 2105603                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
+7f4ea2fb6000-7f4ea2fb8000 r-xp 00000000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f4ea2fb8000-7f4ea31b7000 ---p 00002000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f4ea31b7000-7f4ea31b8000 r-xp 00001000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f4ea31b8000-7f4ea31b9000 rwxp 00002000 08:02 2105591                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
+7f4ea31b9000-7f4ea31bb000 r-xp 00000000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f4ea31bb000-7f4ea33ba000 ---p 00002000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f4ea33ba000-7f4ea33bb000 r-xp 00001000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f4ea33bb000-7f4ea33bc000 rwxp 00002000 08:02 2105583                    /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0
+7f4ea33bc000-7f4ea33c5000 r-xp 00000000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f4ea33c5000-7f4ea35c4000 ---p 00009000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f4ea35c4000-7f4ea35c5000 r-xp 00008000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f4ea35c5000-7f4ea35c6000 rwxp 00009000 08:02 2105587                    /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
+7f4ea35c6000-7f4ea35ce000 r-xp 00000000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f4ea35ce000-7f4ea37cd000 ---p 00008000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f4ea37cd000-7f4ea37ce000 r-xp 00007000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f4ea37ce000-7f4ea37cf000 rwxp 00008000 08:02 2105619                    /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
+7f4ea37cf000-7f4ea37de000 r-xp 00000000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f4ea37de000-7f4ea39dd000 ---p 0000f000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f4ea39dd000-7f4ea39de000 r-xp 0000e000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f4ea39de000-7f4ea39df000 rwxp 0000f000 08:02 2099062                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
+7f4ea39df000-7f4ea39e1000 r-xp 00000000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f4ea39e1000-7f4ea3be0000 ---p 00002000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f4ea3be0000-7f4ea3be1000 r-xp 00001000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f4ea3be1000-7f4ea3be2000 rwxp 00002000 08:02 2105615                    /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
+7f4ea3be2000-7f4ea3beb000 r-xp 00000000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f4ea3beb000-7f4ea3deb000 ---p 00009000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f4ea3deb000-7f4ea3dec000 r-xp 00009000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f4ea3dec000-7f4ea3ded000 rwxp 0000a000 08:02 2105623                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
+7f4ea3ded000-7f4ea3dff000 r-xp 00000000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f4ea3dff000-7f4ea3ffe000 ---p 00012000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f4ea3ffe000-7f4ea3fff000 r-xp 00011000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f4ea3fff000-7f4ea4000000 rwxp 00012000 08:02 2105599                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
+7f4ea4000000-7f4ea7be2000 rwxp 00000000 00:00 0 
+7f4ea7be2000-7f4ea8000000 ---p 00000000 00:00 0 
+7f4ea8001000-7f4ea8005000 r-xs 0001f000 08:02 8789236                    /opt/eclipse/plugins/org.hibernate.eclipse_3.5.1.v20120715-0252-H98-Final/org.hibernate.eclipse.jar
+7f4ea8005000-7f4ea8007000 r-xs 00013000 08:02 10623308                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ide_common.jar
+7f4ea8007000-7f4ea8009000 r-xs 00006000 08:02 10623298                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/layoutlib_api.jar
+7f4ea8009000-7f4ea801a000 r-xs 000d3000 08:02 10623277                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/freemarker-2.3.19.jar
+7f4ea801a000-7f4ea804e000 r-xp 00000000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f4ea804e000-7f4ea824e000 ---p 00034000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f4ea824e000-7f4ea824f000 r-xp 00034000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f4ea824f000-7f4ea8250000 rwxp 00035000 08:02 2105732                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
+7f4ea8250000-7f4ea838b000 r-xp 00000000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f4ea838b000-7f4ea858a000 ---p 0013b000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f4ea858a000-7f4ea858e000 r-xp 0013a000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f4ea858e000-7f4ea8590000 rwxp 0013e000 08:02 2105763                    /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0
+7f4ea8590000-7f4ea8592000 rwxp 00000000 00:00 0 
+7f4ea8592000-7f4ea85b0000 r-xp 00000000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f4ea85b0000-7f4ea87af000 ---p 0001e000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f4ea87af000-7f4ea87b0000 r-xp 0001d000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f4ea87b0000-7f4ea87b1000 rwxp 0001e000 08:02 2105755                    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.2400.0
+7f4ea87b1000-7f4ea87f8000 r-xp 00000000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f4ea87f8000-7f4ea89f8000 ---p 00047000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f4ea89f8000-7f4ea89fa000 r-xp 00047000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f4ea89fa000-7f4ea89fb000 rwxp 00049000 08:02 2105865                    /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.2903.0
+7f4ea89fb000-7f4ea8a06000 r-xp 00000000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f4ea8a06000-7f4ea8c06000 ---p 0000b000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f4ea8c06000-7f4ea8c07000 r-xp 0000b000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f4ea8c07000-7f4ea8c08000 rwxp 0000c000 08:02 2105870                    /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.2903.0
+7f4ea8c08000-7f4ea8cb5000 r-xp 00000000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f4ea8cb5000-7f4ea8eb5000 ---p 000ad000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f4ea8eb5000-7f4ea8eb9000 r-xp 000ad000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f4ea8eb9000-7f4ea8ebb000 rwxp 000b1000 08:02 2099544                    /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.6
+7f4ea8ebb000-7f4ea8ef6000 r-xp 00000000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f4ea8ef6000-7f4ea90f5000 ---p 0003b000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f4ea90f5000-7f4ea90f6000 r-xp 0003a000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f4ea90f6000-7f4ea90f7000 rwxp 0003b000 08:02 13897421                   /lib/x86_64-linux-gnu/libpcre.so.3.12.1
+7f4ea90f7000-7f4ea90fe000 r-xp 00000000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f4ea90fe000-7f4ea92fd000 ---p 00007000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f4ea92fd000-7f4ea92fe000 r-xp 00006000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f4ea92fe000-7f4ea92ff000 rwxp 00007000 08:02 2105728                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.0
+7f4ea92ff000-7f4ea9303000 r-xp 00000000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f4ea9303000-7f4ea9502000 ---p 00004000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f4ea9502000-7f4ea9503000 r-xp 00003000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f4ea9503000-7f4ea9504000 rwxp 00004000 08:02 2105793                    /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.3000.0
+7f4ea9504000-7f4ea95f8000 r-xp 00000000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f4ea95f8000-7f4ea97f7000 ---p 000f4000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f4ea97f7000-7f4ea97f8000 r-xp 000f3000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f4ea97f8000-7f4ea97f9000 rwxp 000f4000 08:02 13897389                   /lib/x86_64-linux-gnu/libglib-2.0.so.0.3000.0
+7f4ea97f9000-7f4ea97fa000 rwxp 00000000 00:00 0 
+7f4ea97fa000-7f4ea9848000 r-xp 00000000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f4ea9848000-7f4ea9a48000 ---p 0004e000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f4ea9a48000-7f4ea9a49000 r-xp 0004e000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f4ea9a49000-7f4ea9a4a000 rwxp 0004f000 08:02 2105784                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0
+7f4ea9a4a000-7f4ea9a4b000 rwxp 00000000 00:00 0 
+7f4ea9a4b000-7f4ea9a4c000 r-xs 00005000 08:02 10623701                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/manifmerger.jar
+7f4ea9a4c000-7f4ea9a4f000 r-xs 00000000 08:02 9175129                    /var/cache/fontconfig/d60319d88cac85ba9e1a07bd06cfbb8c-le64.cache-3
+7f4ea9a4f000-7f4ea9a50000 r-xs 00000000 08:02 9180773                    /var/cache/fontconfig/4794a0821666d79190d59a36cb4f44b5-le64.cache-3
+7f4ea9a50000-7f4ea9a56000 r-xs 00036000 08:02 10624378                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/931/1/.cp/jaxen-1.1-beta-6.jar
+7f4ea9a56000-7f4ea9a71000 r-xs 00000000 08:02 2622928                    /usr/share/mime/mime.cache
+7f4ea9a71000-7f4ea9a80000 r-xp 00000000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7f4ea9a80000-7f4ea9b7f000 ---p 0000f000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7f4ea9b7f000-7f4ea9b81000 rwxp 0000e000 08:02 4331577                    /opt/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
+7f4ea9b81000-7f4ea9b82000 r-xs 0000b000 08:02 4331532                    /opt/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
+7f4ea9b82000-7f4ea9b83000 ---p 00000000 00:00 0 
+7f4ea9b83000-7f4ea9c83000 rwxp 00000000 00:00 0 
+7f4ea9c83000-7f4ea9c86000 ---p 00000000 00:00 0 
+7f4ea9c86000-7f4ea9d84000 rwxp 00000000 00:00 0 
+7f4ea9d84000-7f4ea9d87000 ---p 00000000 00:00 0 
+7f4ea9d87000-7f4ea9e85000 rwxp 00000000 00:00 0 
+7f4ea9e85000-7f4ea9e88000 ---p 00000000 00:00 0 
+7f4ea9e88000-7f4ea9f86000 rwxp 00000000 00:00 0 
+7f4ea9f86000-7f4ea9f89000 ---p 00000000 00:00 0 
+7f4ea9f89000-7f4eaa087000 rwxp 00000000 00:00 0 
+7f4eaa087000-7f4eaa76b000 r-xp 00000000 08:02 2104481                    /usr/lib/locale/locale-archive
+7f4eaa76b000-7f4eaa76e000 ---p 00000000 00:00 0 
+7f4eaa76e000-7f4eaa86c000 rwxp 00000000 00:00 0 
+7f4eaa86c000-7f4eaa86f000 ---p 00000000 00:00 0 
+7f4eaa86f000-7f4eaa96d000 rwxp 00000000 00:00 0 
+7f4eaa96d000-7f4eaa96e000 ---p 00000000 00:00 0 
+7f4eaa96e000-7f4eab3ab000 rwxp 00000000 00:00 0 
+7f4eab3ab000-7f4eab543000 r-xs 03027000 08:02 17436761                   /opt/jdk1.6.0_24/jre/lib/rt.jar
+7f4eab543000-7f4eab544000 ---p 00000000 00:00 0 
+7f4eab544000-7f4eab644000 rwxp 00000000 00:00 0 
+7f4eab644000-7f4eab645000 ---p 00000000 00:00 0 
+7f4eab645000-7f4eab745000 rwxp 00000000 00:00 0 
+7f4eab745000-7f4eab746000 ---p 00000000 00:00 0 
+7f4eab746000-7f4eab846000 rwxp 00000000 00:00 0 
+7f4eab846000-7f4eab847000 ---p 00000000 00:00 0 
+7f4eab847000-7f4eab947000 rwxp 00000000 00:00 0 
+7f4eab947000-7f4eab948000 ---p 00000000 00:00 0 
+7f4eab948000-7f4eaba48000 rwxp 00000000 00:00 0 
+7f4eaba48000-7f4eaba49000 ---p 00000000 00:00 0 
+7f4eaba49000-7f4eabb49000 rwxp 00000000 00:00 0 
+7f4eabb49000-7f4eabb4a000 ---p 00000000 00:00 0 
+7f4eabb4a000-7f4eabc4a000 rwxp 00000000 00:00 0 
+7f4eabc4a000-7f4eabc4b000 ---p 00000000 00:00 0 
+7f4eabc4b000-7f4eabd83000 rwxp 00000000 00:00 0 
+7f4eabd83000-7f4eabdcb000 rwxp 00000000 00:00 0 
+7f4eabdcb000-7f4eabf21000 rwxp 00000000 00:00 0 
+7f4eabf21000-7f4eac076000 rwxp 00000000 00:00 0 
+7f4eac076000-7f4eac0ae000 rwxp 00000000 00:00 0 
+7f4eac0ae000-7f4eac0f6000 rwxp 00000000 00:00 0 
+7f4eac0f6000-7f4eac24c000 rwxp 00000000 00:00 0 
+7f4eac24c000-7f4eac3a0000 rwxp 00000000 00:00 0 
+7f4eac3a0000-7f4eac4f6000 rwxp 00000000 00:00 0 
+7f4eac4f6000-7f4eacfe7000 rwxp 00000000 00:00 0 
+7f4eacfe7000-7f4eaf4f7000 rwxp 00000000 00:00 0 
+7f4eaf4f7000-7f4eaf505000 r-xp 00000000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7f4eaf505000-7f4eaf607000 ---p 0000e000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7f4eaf607000-7f4eaf60a000 rwxp 00010000 08:02 17436516                   /opt/jdk1.6.0_24/jre/lib/amd64/libzip.so
+7f4eaf60a000-7f4eaf60b000 rwxp 00000000 00:00 0 
+7f4eaf60b000-7f4eaf617000 r-xp 00000000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f4eaf617000-7f4eaf816000 ---p 0000c000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f4eaf816000-7f4eaf817000 r-xp 0000b000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f4eaf817000-7f4eaf818000 rwxp 0000c000 08:02 13897411                   /lib/x86_64-linux-gnu/libnss_files-2.13.so
+7f4eaf818000-7f4eaf822000 r-xp 00000000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f4eaf822000-7f4eafa22000 ---p 0000a000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f4eafa22000-7f4eafa23000 r-xp 0000a000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f4eafa23000-7f4eafa24000 rwxp 0000b000 08:02 13897419                   /lib/x86_64-linux-gnu/libnss_nis-2.13.so
+7f4eafa24000-7f4eafa2c000 r-xp 00000000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f4eafa2c000-7f4eafc2b000 ---p 00008000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f4eafc2b000-7f4eafc2c000 r-xp 00007000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f4eafc2c000-7f4eafc2d000 rwxp 00008000 08:02 13897371                   /lib/x86_64-linux-gnu/libnss_compat-2.13.so
+7f4eafc2d000-7f4eafc34000 r-xp 00000000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7f4eafc34000-7f4eafd35000 ---p 00007000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7f4eafd35000-7f4eafd37000 rwxp 00008000 08:02 17436520                   /opt/jdk1.6.0_24/jre/lib/amd64/native_threads/libhpi.so
+7f4eafd37000-7f4eafd38000 rwxp 00000000 00:00 0 
+7f4eafd38000-7f4eafd4f000 r-xp 00000000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f4eafd4f000-7f4eaff4e000 ---p 00017000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f4eaff4e000-7f4eaff4f000 r-xp 00016000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f4eaff4f000-7f4eaff50000 rwxp 00017000 08:02 13897366                   /lib/x86_64-linux-gnu/libnsl-2.13.so
+7f4eaff50000-7f4eaff52000 rwxp 00000000 00:00 0 
+7f4eaff52000-7f4eaff7b000 r-xp 00000000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7f4eaff7b000-7f4eb007a000 ---p 00029000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7f4eb007a000-7f4eb0081000 rwxp 00028000 08:02 17436494                   /opt/jdk1.6.0_24/jre/lib/amd64/libjava.so
+7f4eb0081000-7f4eb008e000 r-xp 00000000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7f4eb008e000-7f4eb018d000 ---p 0000d000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7f4eb018d000-7f4eb0190000 rwxp 0000c000 08:02 17436515                   /opt/jdk1.6.0_24/jre/lib/amd64/libverify.so
+7f4eb0190000-7f4eb0197000 r-xp 00000000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f4eb0197000-7f4eb0396000 ---p 00007000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f4eb0396000-7f4eb0397000 r-xp 00006000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f4eb0397000-7f4eb0398000 rwxp 00007000 08:02 13897358                   /lib/x86_64-linux-gnu/librt-2.13.so
+7f4eb0398000-7f4eb039b000 ---p 00000000 00:00 0 
+7f4eb039b000-7f4eb0499000 rwxp 00000000 00:00 0 
+7f4eb0499000-7f4eb051c000 r-xp 00000000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f4eb051c000-7f4eb071b000 ---p 00083000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f4eb071b000-7f4eb071c000 r-xp 00082000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f4eb071c000-7f4eb071d000 rwxp 00083000 08:02 13897407                   /lib/x86_64-linux-gnu/libm-2.13.so
+7f4eb071d000-7f4eb0f5b000 r-xp 00000000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7f4eb0f5b000-7f4eb105a000 ---p 0083e000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7f4eb105a000-7f4eb11ee000 rwxp 0083d000 08:02 17436523                   /opt/jdk1.6.0_24/jre/lib/amd64/server/libjvm.so
+7f4eb11ee000-7f4eb1227000 rwxp 00000000 00:00 0 
+7f4eb1227000-7f4eb13c0000 r-xp 00000000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f4eb13c0000-7f4eb15bf000 ---p 00199000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f4eb15bf000-7f4eb15c3000 r-xp 00198000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f4eb15c3000-7f4eb15c4000 rwxp 0019c000 08:02 13897425                   /lib/x86_64-linux-gnu/libc-2.13.so
+7f4eb15c4000-7f4eb15ca000 rwxp 00000000 00:00 0 
+7f4eb15ca000-7f4eb15cc000 r-xp 00000000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f4eb15cc000-7f4eb17cc000 ---p 00002000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f4eb17cc000-7f4eb17cd000 r-xp 00002000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f4eb17cd000-7f4eb17ce000 rwxp 00003000 08:02 13897406                   /lib/x86_64-linux-gnu/libdl-2.13.so
+7f4eb17ce000-7f4eb17e6000 r-xp 00000000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f4eb17e6000-7f4eb19e5000 ---p 00018000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f4eb19e5000-7f4eb19e6000 r-xp 00017000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f4eb19e6000-7f4eb19e7000 rwxp 00018000 08:02 13897402                   /lib/x86_64-linux-gnu/libpthread-2.13.so
+7f4eb19e7000-7f4eb19eb000 rwxp 00000000 00:00 0 
+7f4eb19eb000-7f4eb1a0c000 r-xp 00000000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7f4eb1a0c000-7f4eb1a15000 r-xs 00052000 08:02 10623249                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/sdkuilib.jar
+7f4eb1a15000-7f4eb1a41000 rwxp 00000000 00:00 0 
+7f4eb1a41000-7f4eb1ad5000 rwxp 00000000 00:00 0 
+7f4eb1ad5000-7f4eb1ad8000 rwxp 00000000 00:00 0 
+7f4eb1ad8000-7f4eb1adf000 r-xp 00000000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7f4eb1adf000-7f4eb1be0000 ---p 00007000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7f4eb1be0000-7f4eb1be2000 rwxp 00008000 08:02 17436478                   /opt/jdk1.6.0_24/jre/lib/amd64/jli/libjli.so
+7f4eb1be2000-7f4eb1be3000 rwxp 00000000 00:00 0 
+7f4eb1be3000-7f4eb1be5000 r-xs 0000f000 08:02 4329868                    /opt/eclipse/plugins/org.jboss.tools.common.validation_3.3.1.v20120715-0209-H81-Final.jar
+7f4eb1be5000-7f4eb1be6000 r-xs 00003000 08:02 10624274                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/sdkstats.jar
+7f4eb1be6000-7f4eb1be8000 r-xs 0000d000 08:02 10624061                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/commons-logging-1.1.1.jar
+7f4eb1be8000-7f4eb1bea000 r-xs 0000d000 08:02 10623940                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/914/1/.cp/libs/commons-codec-1.4.jar
+7f4eb1bea000-7f4eb1bee000 r-xs 00029000 08:02 4331725                    /opt/eclipse/plugins/org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar
+7f4eb1bee000-7f4eb1bf0000 r-xs 0000a000 08:02 10623501                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/asm-4.0.jar
+7f4eb1bf0000-7f4eb1bf3000 r-xs 00019000 08:02 4332094                    /opt/eclipse/plugins/org.eclipse.wst.common.frameworks_1.2.102.v201201190400.jar
+7f4eb1bf3000-7f4eb1bf4000 r-xs 00003000 08:02 10624379                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/931/1/.cp/getopt.jar
+7f4eb1bf4000-7f4eb1bf5000 r-xs 0000a000 08:02 10623266                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/kxml2-2.3.0.jar
+7f4eb1bf5000-7f4eb1bf6000 r-xs 00002000 08:02 10623256                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ninepatch.jar
+7f4eb1bf6000-7f4eb1bf7000 r-xs 00001000 08:02 10623602                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/swtmenubar.jar
+7f4eb1bf7000-7f4eb1bf9000 r-xs 00004000 08:02 10623549                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/asm-tree-4.0.jar
+7f4eb1bf9000-7f4eb1bfb000 r-xs 00018000 08:02 4331826                    /opt/eclipse/plugins/org.eclipse.equinox.common_3.6.0.v20110523.jar
+7f4eb1bfb000-7f4eb1bfc000 r-xs 00002000 08:02 10623575                   /opt/eclipse/configuration/org.eclipse.osgi/bundles/913/1/.cp/libs/ant-glob.jar
+7f4eb1bfc000-7f4eb1bfd000 r-xs 0000d000 08:02 4331314                    /opt/eclipse/plugins/org.eclipse.jdt.compiler.tool_1.0.100.v_B79_R37x.jar
+7f4eb1bfd000-7f4eb1bfe000 r-xs 00000000 08:02 3151433                    /home/jaybeepee/.local/share/mime/mime.cache
+7f4eb1bfe000-7f4eb1bff000 r-xs 00002000 08:02 4331802                    /opt/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry_3.5.0.v20110505/runtime_registry_compatibility.jar
+7f4eb1bff000-7f4eb1c07000 rwxs 00000000 08:02 22023122                   /tmp/hsperfdata_jaybeepee/19003
+7f4eb1c07000-7f4eb1c08000 rwxp 00000000 00:00 0 
+7f4eb1c08000-7f4eb1c09000 r-xp 00000000 00:00 0 
+7f4eb1c09000-7f4eb1c0b000 rwxp 00000000 00:00 0 
+7f4eb1c0b000-7f4eb1c0c000 r-xp 00020000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7f4eb1c0c000-7f4eb1c0e000 rwxp 00021000 08:02 13897412                   /lib/x86_64-linux-gnu/ld-2.13.so
+7fffd98b6000-7fffd98d7000 rwxp 00000000 00:00 0                          [stack]
+7fffd99ff000-7fffd9a00000 r-xp 00000000 00:00 0                          [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
+
+VM Arguments:
+jvm_args: -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms1024m -Xmx2048m 
+java_command: /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /opt/eclipse/eclipse -name Eclipse --launcher.library /opt/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so -startup /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.overrideVmargs -exitdata 2c000e -product org.eclipse.epp.package.cpp.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms1024m -Xmx2048m -jar /opt/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+PATH=/home/jaybeepee/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/glassfish-3.1.2/bin:/opt/jdk1.6.0_24/bin/:/opt/glassfish-3.1.2/bin:/opt/jdk1.6.0_24/bin/:/opt/dex2jar-0.0.9.11/
+USERNAME=jaybeepee
+LD_LIBRARY_PATH=/opt/jdk1.6.0_24/jre/lib/amd64/server:/opt/jdk1.6.0_24/jre/lib/amd64:/opt/jdk1.6.0_24/jre/../lib/amd64
+SHELL=/bin/bash
+DISPLAY=:0
+
+Signal Handlers:
+SIGSEGV: [libjvm.so+0x791b30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGBUS: [libjvm.so+0x791b30], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGFPE: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGPIPE: SIG_IGN, sa_mask[0]=0x00001000, sa_flags=0x10000000
+SIGXFSZ: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGILL: [libjvm.so+0x640ba0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
+SIGUSR2: [libjvm.so+0x643780], sa_mask[0]=0x00000000, sa_flags=0x10000004
+SIGHUP: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGINT: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGTERM: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGQUIT: [libjvm.so+0x643380], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+
+
+---------------  S Y S T E M  ---------------
+
+OS:wheezy/sid
+
+uname:Linux 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64
+libc:glibc 2.13 NPTL 2.13 
+rlimit: STACK 8192k, CORE 0k, NPROC 63508, NOFILE 4096, AS infinity
+load average:0.16 0.60 0.50
+
+/proc/meminfo:
+MemTotal:        8144924 kB
+MemFree:          616712 kB
+Buffers:         1001192 kB
+Cached:          2908528 kB
+SwapCached:            0 kB
+Active:          3726076 kB
+Inactive:        2929540 kB
+Active(anon):    2747944 kB
+Inactive(anon):    13840 kB
+Active(file):     978132 kB
+Inactive(file):  2915700 kB
+Unevictable:          72 kB
+Mlocked:              72 kB
+SwapTotal:       7811068 kB
+SwapFree:        7811068 kB
+Dirty:              3384 kB
+Writeback:             0 kB
+AnonPages:       2746304 kB
+Mapped:           232988 kB
+Shmem:             15848 kB
+Slab:             644956 kB
+SReclaimable:     609708 kB
+SUnreclaim:        35248 kB
+KernelStack:        4040 kB
+PageTables:        32664 kB
+NFS_Unstable:          0 kB
+Bounce:                0 kB
+WritebackTmp:          0 kB
+CommitLimit:    11883528 kB
+Committed_AS:    5692120 kB
+VmallocTotal:   34359738367 kB
+VmallocUsed:      350036 kB
+VmallocChunk:   34359363068 kB
+HardwareCorrupted:     0 kB
+AnonHugePages:         0 kB
+HugePages_Total:       0
+HugePages_Free:        0
+HugePages_Rsvd:        0
+HugePages_Surp:        0
+Hugepagesize:       2048 kB
+DirectMap4k:      163840 kB
+DirectMap2M:     8183808 kB
+
+
+CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht
+
+Memory: 4k page, physical 8144924k(616712k free), swap 7811068k(7811068k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (19.1-b02) for linux-amd64 JRE (1.6.0_24-b07), built on Feb  2 2011 16:55:54 by "java_re" with gcc 3.2.2 (SuSE Linux)
+
+time: Mon Nov 12 13:50:32 2012
+elapsed time: 187 seconds
+

+ 222 - 0
modules/usrloc_scscf/hslot.c

@@ -0,0 +1,222 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+
+
+#include "hslot.h"
+
+/*! number of locks */
+int ul_locks_no=4;
+/*! global list of locks */
+gen_lock_set_t* ul_locks=0;
+
+
+/*!
+ * \brief Initialize locks for the hash table
+ * \return 0 on success, -1 on failure
+ */
+int ul_init_locks(void)
+{
+	int i;
+	i = ul_locks_no;
+	do {
+		if ((( ul_locks=lock_set_alloc(i))!=0)&&
+				(lock_set_init(ul_locks)!=0))
+		{
+			ul_locks_no = i;
+			LM_INFO("locks array size %d\n", ul_locks_no);
+			return 0;
+
+		}
+		if (ul_locks){
+			lock_set_dealloc(ul_locks);
+			ul_locks=0;
+		}
+		i--;
+		if(i==0)
+		{
+			LM_ERR("failed to allocate locks\n");
+			return -1;
+		}
+	} while (1);
+}
+
+
+/*!
+ * \brief Unlock all locks on the list
+ */
+void ul_unlock_locks(void)
+{
+	unsigned int i;
+
+	if (ul_locks==0)
+		return;
+
+	for (i=0;i<ul_locks_no;i++) {
+#ifdef GEN_LOCK_T_PREFERED
+		lock_release(&ul_locks->locks[i]);
+#else
+		ul_release_idx(i);
+#endif
+	};
+}
+
+
+/*!
+ * \brief Destroy all locks on the list
+ */
+void ul_destroy_locks(void)
+{
+	if (ul_locks !=0){
+		lock_set_destroy(ul_locks);
+		lock_set_dealloc(ul_locks);
+	};
+}
+
+#ifndef GEN_LOCK_T_PREFERED
+/*!
+ * \brief Lock a lock with a certain index
+ * \param idx lock index
+ */
+void ul_lock_idx(int idx)
+{
+	lock_set_get(ul_locks, idx);
+}
+
+
+/*!
+ * \brief Release a lock with a certain index
+ * \param idx lock index
+ */
+void ul_release_idx(int idx)
+{
+	lock_set_release(ul_locks, idx);
+}
+#endif
+
+/*!
+ * \brief Initialize cache slot structure
+ * \param _d domain for the hash slot
+ * \param _s hash slot
+ * \param n used to get the slot number (modulo number or locks)
+ */
+void init_slot(struct udomain* _d, hslot_t* _s, int n)
+{
+	_s->n = 0;
+	_s->first = 0;
+	_s->last = 0;
+	_s->d = _d;
+
+#ifdef GEN_LOCK_T_PREFERED
+	_s->lock = &ul_locks->locks[n%ul_locks_no];
+#else
+	_s->lockidx = n%ul_locks_no;
+#endif
+}
+
+
+/*!
+ * \brief Deinitialize given slot structure
+ * \param _s hash slot
+ */
+void deinit_slot(hslot_t* _s)
+{
+	struct impurecord* ptr;
+	
+	     /* Remove all elements */
+	while(_s->first) {
+		ptr = _s->first;
+		_s->first = _s->first->next;
+		free_impurecord(ptr);
+	}
+	
+	_s->n = 0;
+	_s->last = 0;
+    _s->d = 0;
+}
+
+
+/*!
+ * \brief Add an element to an slot's linked list
+ * \param _s hash slot
+ * \param _r added record
+ */
+void slot_add(hslot_t* _s, struct impurecord* _r)
+{
+	if (_s->n == 0) {
+		_s->first = _s->last = _r;
+	} else {
+		_r->prev = _s->last;
+		_s->last->next = _r;
+		_s->last = _r;
+	}
+	_s->n++;
+	_r->slot = _s;
+}
+
+
+/*!
+ * \brief Remove an element from slot linked list
+ * \param _s hash slot
+ * \param _r removed record
+ */
+void slot_rem(hslot_t* _s, struct impurecord* _r)
+{
+	if (_r->prev) {
+		_r->prev->next = _r->next;
+	} else {
+		_s->first = _r->next;
+	}
+
+	if (_r->next) {
+		_r->next->prev = _r->prev;
+	} else {
+		_s->last = _r->prev;
+	}
+
+	_r->prev = _r->next = 0;
+	_r->slot = 0;
+	_s->n--;
+}

+ 113 - 0
modules/usrloc_scscf/hslot.h

@@ -0,0 +1,113 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 HSLOT_H
+#define HSLOT_H
+
+#include "../../locking.h"
+
+#include "udomain.h"
+#include "impurecord.h"
+
+
+struct udomain;
+struct impurecord;
+
+
+typedef struct hslot {
+	int n;                  /*!< Number of elements in the collision slot */
+	struct impurecord* first;  /*!< First element in the list */
+	struct impurecord* last;   /*!< Last element in the list */
+	struct udomain* d;      /*!< Domain we belong to */
+#ifdef GEN_LOCK_T_PREFERED
+	gen_lock_t *lock;       /*!< Lock for hash entry - fastlock */
+#else
+	int lockidx;            /*!< Lock index for hash entry - the rest*/
+#endif
+} hslot_t;
+
+/*! \brief
+ * Initialize slot structure
+ */
+void init_slot(struct udomain* _d, hslot_t* _s, int n);
+
+
+/*! \brief
+ * Deinitialize given slot structure
+ */
+void deinit_slot(hslot_t* _s);
+
+
+/*! \brief
+ * Add an element to slot linked list
+ */
+void slot_add(hslot_t* _s, struct impurecord* _r);
+
+
+/*! \brief
+ * Remove an element from slot linked list
+ */
+void slot_rem(hslot_t* _s, struct impurecord* _r);
+
+
+/*!
+ * \brief Initialize locks for the hash table
+ * \return 0 on success, -1 on failure
+ */
+int ul_init_locks(void);
+
+
+/*!
+ * \brief Destroy all locks on the list
+ */
+void ul_unlock_locks(void);
+void ul_destroy_locks(void);
+
+#ifndef GEN_LOCK_T_PREFERED
+void ul_lock_idx(int idx);
+void ul_release_idx(int idx);
+#endif
+
+#endif /* HSLOT_H */

+ 218 - 0
modules/usrloc_scscf/hslot_sp.c

@@ -0,0 +1,218 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "hslot_sp.h"
+
+/*! number of locks */
+int subs_locks_no=4;
+/*! global list of locks */
+gen_lock_set_t* subs_locks=0;
+
+
+/*!
+ * \brief Initialize locks for the hash table
+ * \return 0 on success, -1 on failure
+ */
+int subs_init_locks(void)
+{
+	int i;
+	i = subs_locks_no;
+	do {
+		if ((( subs_locks=lock_set_alloc(i))!=0)&&
+				(lock_set_init(subs_locks)!=0))
+		{
+			subs_locks_no = i;
+			LM_INFO("locks array size %d\n", subs_locks_no);
+			return 0;
+
+		}
+		if (subs_locks){
+			lock_set_dealloc(subs_locks);
+			subs_locks=0;
+		}
+		i--;
+		if(i==0)
+		{
+			LM_ERR("failed to allocate locks\n");
+			return -1;
+		}
+	} while (1);
+}
+
+
+/*!
+ * \brief Unlock all locks on the list
+ */
+void subs_unlock_locks(void)
+{
+	unsigned int i;
+
+	if (subs_locks==0)
+		return;
+
+	for (i=0;i<subs_locks_no;i++) {
+#ifdef GEN_LOCK_T_PREFERED
+		lock_release(&subs_locks->locks[i]);
+#else
+		subs_release_idx(i);
+#endif
+	};
+}
+
+
+/*!
+ * \brief Destroy all locks on the list
+ */
+void subs_destroy_locks(void)
+{
+	if (subs_locks !=0){
+		lock_set_destroy(subs_locks);
+		lock_set_dealloc(subs_locks);
+	};
+}
+
+#ifndef GEN_LOCK_T_PREFERED
+/*!
+ * \brief Lock a lock with a certain index
+ * \param idx lock index
+ */
+void subs_lock_idx(int idx)
+{
+	lock_set_get(subs_locks, idx);
+}
+
+
+/*!
+ * \brief Release a lock with a certain index
+ * \param idx lock index
+ */
+void subs_release_idx(int idx)
+{
+	lock_set_release(subs_locks, idx);
+}
+#endif
+
+/*!
+ * \brief Initialize cache slot structure
+ * \param _d domain for the hash slot
+ * \param _s hash slot
+ * \param n used to get the slot number (modulo number or locks)
+ */
+void subs_init_slot(hslot_sp_t* _s, int n)
+{
+	_s->n = 0;
+	_s->first = 0;
+	_s->last = 0;
+
+#ifdef GEN_LOCK_T_PREFERED
+	_s->lock = &subs_locks->locks[n%subs_locks_no];
+#else
+	_s->lockidx = n%subs_locks_no;
+#endif
+}
+
+
+/*!
+ * \brief Deinitialize given slot structure
+ * \param _s hash slot
+ */
+void subs_deinit_slot(hslot_sp_t* _s)
+{
+	//struct ims_subscription_s* ptr;
+
+	     /* Remove all elements */
+	while(_s->first) {
+		//ptr = _s->first;
+		_s->first = _s->first->next;
+		//free_impurecord(ptr);
+	}
+
+	_s->n = 0;
+	_s->last = 0;
+}
+
+
+/*!
+ * \brief Add an element to an slot's linked list
+ * \param _s hash slot
+ * \param _r added record
+ */
+void subs_slot_add(hslot_sp_t* _s, struct ims_subscription_s* _r)
+{
+	if (_s->n == 0) {
+		_s->first = _s->last = _r;
+	} else {
+		_r->prev = _s->last;
+		_s->last->next = _r;
+		_s->last = _r;
+	}
+	_s->n++;
+	_r->slot = _s;
+}
+
+
+/*!
+ * \brief Remove an element from slot linked list
+ * \param _s hash slot
+ * \param _r removed record
+ */
+void subs_slot_rem(hslot_sp_t* _s, struct ims_subscription_s* _r)
+{
+	if (_r->prev) {
+		_r->prev->next = _r->next;
+	} else {
+		_s->first = _r->next;
+	}
+
+	if (_r->next) {
+		_r->next->prev = _r->prev;
+	} else {
+		_s->last = _r->prev;
+	}
+
+	_r->prev = _r->next = 0;
+	_r->slot = 0;
+	_s->n--;
+}

+ 106 - 0
modules/usrloc_scscf/hslot_sp.h

@@ -0,0 +1,106 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 HSLOTSP_H
+#define HSLOTSP_H
+
+#include "../../locking.h"
+
+#include "usrloc.h"
+
+typedef struct hslot_sp {
+	int n;                  			/*!< Number of elements in the collision slot */
+	struct ims_subscription_s* first;	/*!< First element in the list */
+	struct ims_subscription_s* last;	/*!< Last element in the list */
+#ifdef GEN_LOCK_T_PREFERED
+	gen_lock_t *lock;       			/*!< Lock for hash entry - fastlock */
+#else
+	int lockidx;            			/*!< Lock index for hash entry - the rest*/
+#endif
+} hslot_sp_t;
+
+/*! \brief
+ * Initialize slot structure
+ */
+void subs_init_slot(hslot_sp_t* _s, int n);
+
+
+/*! \brief
+ * Deinitialize given slot structure
+ */
+void subs_deinit_slot(hslot_sp_t* _s);
+
+
+/*! \brief
+ * Add an element to slot linked list
+ */
+void subs_slot_add(hslot_sp_t* _s, struct ims_subscription_s* _r);
+
+
+/*! \brief
+ * Remove an element from slot linked list
+ */
+void subs_slot_rem(hslot_sp_t* _s, struct ims_subscription_s* _r);
+
+
+/*!
+ * \brief Initialize locks for the hash table
+ * \return 0 on success, -1 on failure
+ */
+int subs_init_locks(void);
+
+
+/*!
+ * \brief Destroy all locks on the list
+ */
+void subs__unlock_locks(void);
+void subs__destroy_locks(void);
+
+#ifndef GEN_LOCK_T_PREFERED
+void subs__lock_idx(int idx);
+void subs__release_idx(int idx);
+#endif
+
+#endif /* HSLOTSP_H */

+ 768 - 0
modules/usrloc_scscf/impurecord.c

@@ -0,0 +1,768 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "impurecord.h"
+#include <string.h>
+#include "../../hashes.h"
+#include "../../mem/shm_mem.h"
+#include "../../dprint.h"
+#include "../../ut.h"
+#include "ul_mod.h"
+#include "usrloc.h"
+#include "utime.h"
+#include "ul_callback.h"
+#include "usrloc.h"
+#include "bin_utils.h"
+#include "subscribe.h"
+#include "../../lib/ims/useful_defs.h"
+
+/*! contact matching mode */
+int matching_mode = CONTACT_ONLY;
+/*! retransmission detection interval in seconds */
+int cseq_delay = 20;
+
+extern int unreg_validity;
+extern int maxcontact_behaviour;
+extern int maxcontact;
+
+/*!
+ * \brief Create and initialize new record structure
+ * \param _dom domain name
+ * \param _aor address of record
+ * \param _r pointer to the new record
+ * \return 0 on success, negative on failure
+ */
+int new_impurecord(str* _dom, str* public_identity, int reg_state, int barring, ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2, impurecord_t** _r) {
+    *_r = (impurecord_t*) shm_malloc(sizeof (impurecord_t));
+    if (*_r == 0) {
+        LM_ERR("no more shared memory\n");
+        return -1;
+    }
+    memset(*_r, 0, sizeof (impurecord_t));
+
+    //setup callback list
+    (*_r)->cbs = (struct ulcb_head_list*) shm_malloc(
+            sizeof (struct ulcb_head_list));
+    if ((*_r)->cbs == 0) {
+        LM_CRIT("no more shared mem\n");
+        shm_free(*_r);
+        *_r = 0;
+        return -2;
+    }
+    (*_r)->cbs->first = 0;
+    (*_r)->cbs->reg_types = 0;
+
+    (*_r)->public_identity.s = (char*) shm_malloc(public_identity->len);
+    if ((*_r)->public_identity.s == 0) {
+        LM_ERR("no more shared memory\n");
+        shm_free(*_r);
+        *_r = 0;
+        return -2;
+    }
+    memcpy((*_r)->public_identity.s, public_identity->s, public_identity->len);
+    (*_r)->public_identity.len = public_identity->len;
+    (*_r)->domain = _dom;
+    (*_r)->aorhash = core_hash(public_identity, 0, 0);
+    (*_r)->reg_state = reg_state;
+    if (barring >= 0) { //just in case we call this with no barring -1 will ignore
+        (*_r)->barring = barring;
+    }
+    if (ccf1 && ccf1->len > 0) STR_SHM_DUP((*_r)->ccf1, *ccf1, "CCF1");
+    if (ccf2 && ccf2->len > 0) STR_SHM_DUP((*_r)->ccf2, *ccf2, "CCF2");
+    if (ecf1 && ecf1->len > 0) STR_SHM_DUP((*_r)->ecf1, *ecf1, "ECF1");
+    if (ecf2 && ecf2->len > 0) STR_SHM_DUP((*_r)->ecf2, *ecf2, "ECF2");
+    /*assign ims subscription profile*/
+    if (*s) {
+        (*_r)->s = *s;
+        lock_get((*_r)->s->lock);
+        (*_r)->s->ref_count++;
+        lock_release((*_r)->s->lock);
+    }
+
+    return 0;
+
+out_of_memory:
+    LM_ERR("no more shared memory\n");
+    return -3;
+}
+
+/*!
+ * \brief Free all memory used by the given structure
+ *
+ * Free all memory used by the given structure.
+ * The structure must be removed from all linked
+ * lists first
+ * \param _r freed record list
+ */
+void free_impurecord(impurecord_t* _r) {
+    ucontact_t* ptr;
+    struct ul_callback *cbp, *cbp_tmp;
+    struct _reg_subscriber* subscriber, *s_tmp;
+
+    while (_r->contacts) {
+        ptr = _r->contacts;
+        _r->contacts = _r->contacts->next;
+        free_ucontact(ptr);
+    }
+
+    //free IMS specific extensions
+    if (_r->ccf1.s)
+        shm_free(_r->ccf1.s);
+    if (_r->ccf2.s)
+        shm_free(_r->ccf2.s);
+    if (_r->ecf1.s)
+        shm_free(_r->ecf1.s);
+    if (_r->ecf2.s)
+        shm_free(_r->ecf2.s);
+    if (_r->s) {
+        LM_DBG("ref count on this IMS data is %d\n", _r->s->ref_count);
+        lock_get(_r->s->lock);
+        if (_r->s->ref_count == 1) {
+            LM_DBG("freeing IMS subscription data\n");
+            free_ims_subscription_data(_r->s);
+        } else {
+            LM_DBG("decrementing IMS subscription data ref count\n");
+            _r->s->ref_count--;
+            lock_release(_r->s->lock);
+        }
+    }
+
+    /*remove REG subscriptions to this IMPU*/
+    subscriber = _r->shead;
+    while (subscriber) {
+        s_tmp = subscriber->next;
+        free_subscriber(subscriber);
+        subscriber = s_tmp;
+    }
+
+    if (_r->public_identity.s)
+        shm_free(_r->public_identity.s);
+
+    //free callback list
+    for (cbp = _r->cbs->first; cbp;) {
+        cbp_tmp = cbp;
+        cbp = cbp->next;
+        if (cbp_tmp->param)
+            shm_free(cbp_tmp->param);
+        shm_free(cbp_tmp);
+    }
+    shm_free(_r->cbs);
+
+
+    shm_free(_r);
+}
+
+/*!
+ * \brief Print a record, useful for debugging
+ * \param _f print output
+ * \param _r printed record
+ */
+void print_impurecord(FILE* _f, impurecord_t* _r) {
+    ucontact_t* ptr;
+
+    fprintf(_f, "...Record(%p)...\n", _r);
+    fprintf(_f, "domain : '%.*s'\n", _r->domain->len, ZSW(_r->domain->s));
+    fprintf(_f, "public_identity    : '%.*s'\n", _r->public_identity.len, ZSW(_r->public_identity.s));
+    fprintf(_f, "aorhash: '%u'\n", (unsigned) _r->aorhash);
+    fprintf(_f, "slot:    '%d'\n", _r->aorhash & (_r->slot->d->size - 1));
+    fprintf(_f, "pi_ref:  '%d'\n", _r->reg_state);
+    fprintf(_f, "barring: '%d'\n", _r->barring);
+    fprintf(_f, "ccf1:    '%.*s'\n", _r->ccf1.len, _r->ccf1.s);
+    fprintf(_f, "ccf2:    '%.*s'\n", _r->ccf2.len, _r->ccf2.s);
+    fprintf(_f, "ecf1:    '%.*s'\n", _r->ecf1.len, _r->ecf1.s);
+    fprintf(_f, "ecf2:    '%.*s'\n", _r->ecf2.len, _r->ecf2.s);
+    if (_r->s) {
+        fprintf(_f, "IMS subs (#%d):   '%p'\n", _r->s->service_profiles_cnt, _r->s);
+        fprintf(_f, "#profiles: '%d\n", _r->s->service_profiles_cnt);
+    }
+
+    int header = 0;
+    reg_subscriber* subscriber = _r->shead;
+    while (subscriber) {
+        if (!header) {
+            fprintf(_f, "...Subscriptions...\n");
+            header = 1;
+        }
+        fprintf(_f, "watcher uri: <%.*s> and presentity uri: <%.*s>\n", subscriber->watcher_uri.len, subscriber->watcher_uri.s, subscriber->presentity_uri.len, subscriber->presentity_uri.s);
+        fprintf(_f, "Expires: %ld\n", subscriber->expires);
+        subscriber = subscriber->next;
+    }
+
+    if (_r->contacts) {
+        ptr = _r->contacts;
+        while (ptr) {
+            print_ucontact(_f, ptr);
+            ptr = ptr->next;
+        }
+    }
+
+    fprintf(_f, ".../Record...\n\n\n\n");
+}
+
+/*!
+ * \brief Add a new contact in memory
+ *
+ * Add a new contact in memory, contacts are ordered by:
+ * 1) q value, 2) descending modification time
+ * \param _r record this contact belongs to
+ * \param _c contact
+ * \param _ci contact information
+ * \return pointer to new created contact on success, 0 on failure
+ */
+ucontact_t* mem_insert_ucontact(impurecord_t* _r, str* _c, ucontact_info_t* _ci) {
+    ucontact_t* ptr, *prev = 0;
+    ucontact_t* c;
+
+    if ((c = new_ucontact(_r->domain, &_r->public_identity, _c, _ci)) == 0) {
+        LM_ERR("failed to create new contact\n");
+        return 0;
+    }
+    if_update_stat(_r->slot, _r->slot->d->contacts, 1);
+
+    ptr = _r->contacts;
+
+    while (ptr) {//make sure our contacts are ordered oldest(first) to newest(last)
+        if (ptr->expires > c->expires)
+            break;
+        prev = ptr;
+        ptr = ptr->next;
+    }
+
+    if (ptr) {
+        if (!ptr->prev) {
+            ptr->prev = c;
+            c->next = ptr;
+            _r->contacts = c;
+        } else {
+            c->next = ptr;
+            c->prev = ptr->prev;
+            ptr->prev->next = c;
+            ptr->prev = c;
+        }
+    } else if (prev) {
+        prev->next = c;
+        c->prev = prev;
+    } else {
+        _r->contacts = c;
+    }
+
+    return c;
+}
+
+/*!
+ * \brief Remove the contact from lists in memory
+ * \param _r record this contact belongs to
+ * \param _c removed contact
+ */
+void mem_remove_ucontact(impurecord_t* _r, ucontact_t* _c) {
+    if (_c->prev) {
+        _c->prev->next = _c->next;
+        if (_c->next) {
+            _c->next->prev = _c->prev;
+        }
+    } else {
+        _r->contacts = _c->next;
+        if (_c->next) {
+            _c->next->prev = 0;
+        }
+    }
+}
+
+/*!
+ * \brief Remove contact in memory from the list and delete it
+ * \param _r record this contact belongs to
+ * \param _c deleted contact
+ */
+void mem_delete_ucontact(impurecord_t* _r, ucontact_t* _c) {
+    mem_remove_ucontact(_r, _c);
+    if_update_stat(_r->slot, _r->slot->d->contacts, -1);
+    free_ucontact(_c);
+}
+
+/*!
+ * \brief Expires timer for NO_DB db_mode
+ *
+ * Expires timer for NO_DB db_mode, process all contacts from
+ * the record, delete the expired ones from memory.
+ * \param _r processed record
+ */
+static inline void nodb_timer(impurecord_t* _r) {
+    ucontact_t* ptr, *t;
+
+    reg_subscriber *s;
+
+    get_act_time();
+
+    s = _r->shead;
+    LM_DBG("Checking validity of IMPU: <%.*s> registration subscriptions\n", _r->public_identity.len, _r->public_identity.s);
+    while (s) {
+        if (!valid_subscriber(s)) {
+            LM_DBG("DBG:registrar_timer: Subscriber with watcher_contact <%.*s> and presentity uri <%.*s> expired and removed.\n",
+                    s->watcher_contact.len, s->watcher_contact.s, s->presentity_uri.len, s->presentity_uri.s);
+            delete_subscriber(_r, s);
+        } else {
+            LM_DBG("DBG:registrar_timer: Subscriber with watcher_contact <%.*s> and presentity uri <%.*s> is valid and expires in %d seconds.\n",
+                    s->watcher_contact.len, s->watcher_contact.s, s->presentity_uri.len, s->presentity_uri.s,
+                    (unsigned int) (s->expires - time(NULL)));
+        }
+        s = s->next;
+    }
+
+    ptr = _r->contacts;
+    LM_DBG("Checking validity of IMPU: <%.*s> contacts\n", _r->public_identity.len, _r->public_identity.s);
+
+    while (ptr) {
+        if (!VALID_CONTACT(ptr, act_time)) {
+            /* run callbacks for EXPIRE event */
+            if (exists_ulcb_type(ptr->cbs, UL_CONTACT_EXPIRE))
+                run_ul_callbacks(ptr->cbs, UL_CONTACT_EXPIRE, _r, ptr);
+
+            if (exists_ulcb_type(_r->cbs, UL_IMPU_EXPIRE_CONTACT)) {
+                run_ul_callbacks(_r->cbs, UL_IMPU_EXPIRE_CONTACT, _r, ptr);
+            }
+
+            LM_DBG("Binding '%.*s','%.*s' has expired\n",
+                    ptr->aor->len, ZSW(ptr->aor->s),
+                    ptr->c.len, ZSW(ptr->c.s));
+
+            t = ptr;
+            ptr = ptr->next;
+
+            mem_delete_ucontact(_r, t);
+            update_stat(_r->slot->d->expires, 1);
+        } else {
+            LM_DBG("IMPU:<%.*s> - contact:<%.*s> is valid and expires in %d seconds\n", _r->public_identity.len, _r->public_identity.s,
+                    ptr->c.len, ptr->c.s,
+                    (unsigned int) (ptr->expires - time(NULL)));
+            ptr = ptr->next;
+        }
+    }
+}
+
+/*!
+ * \brief Run timer functions depending on the db_mode setting.
+ *
+ * Helper function that run the appropriate timer function, depending
+ * on the db_mode setting.
+ * \param _r processed record
+ */
+void timer_impurecord(impurecord_t* _r) {
+    nodb_timer(_r);
+}
+
+/*!
+ * \brief Create and insert new contact into impurecord
+ * \param _r record into the new contact should be inserted
+ * \param _contact contact string
+ * \param _ci contact information
+ * \param _c new created contact
+ * \return 0 on success, -1 on failure
+ */
+int insert_ucontact(impurecord_t* _r, str* _contact, ucontact_info_t* _ci, ucontact_t** _c) {
+    //First check our constraints
+    if (maxcontact > 0 && maxcontact_behaviour > 0) {
+        ucontact_t* contact = _r->contacts;
+        int numcontacts = 0;
+        while (contact) {
+            numcontacts++;
+            contact = contact->next;
+        }
+        if (numcontacts >= maxcontact) {
+            switch (maxcontact_behaviour) {
+                case 1://reject
+                    LM_ERR("too many contacts already registered for IMPU <%.*s>\n", _r->public_identity.len, _r->public_identity.s);
+                    return -1;
+                case 2://overwrite oldest
+                    LM_DBG("Too many contacts already registered, overwriting oldest for IMPU <%.*s>\n", _r->public_identity.len, _r->public_identity.s);
+                    //we can just remove the first one seeing the contacts are ordered on insertion with newest last and oldest first
+                    mem_delete_ucontact(_r, _r->contacts);
+                    break;
+                default://unknown
+                    LM_ERR("unknown maxcontact behaviour..... ignoring\n");
+                    break;
+            }
+        }
+    }
+
+    //at this stage we are safe to insert the new contact
+    LM_DBG("INSERTing ucontact in usrloc module\n");
+    if (((*_c) = mem_insert_ucontact(_r, _contact, _ci)) == 0) {
+        LM_ERR("failed to insert contact\n");
+        return -1;
+    }
+
+    if (exists_ulcb_type(NULL, UL_CONTACT_INSERT)) {
+        run_ul_callbacks(NULL, UL_CONTACT_INSERT, _r, *_c);
+    }
+    if (exists_ulcb_type(_r->cbs, UL_IMPU_NEW_CONTACT)) {
+        run_ul_callbacks(_r->cbs, UL_IMPU_NEW_CONTACT, _r, *_c);
+    }
+
+    return 0;
+}
+
+/*!
+ * \brief Delete ucontact from impurecord
+ * \param _r record where the contact belongs to
+ * \param _c deleted contact
+ * \return 0 on success, -1 on failure
+ */
+int delete_ucontact(impurecord_t* _r, struct ucontact* _c) {
+    int ret = 0;
+    reg_subscriber *s;
+
+    //Richard added this  - fix to remove subscribes that have presentity and watcher uri same as a contact aor that is being removed
+    s = _r->shead;
+    LM_DBG("Checking if there is a subscription to this IMPU that has same watcher contact as this contact");
+    while (s) {
+        
+        LM_DBG("Subscription for this impurecord: watcher uri [%.*s] presentity uri [%.*s] watcher contact [%.*s] ", s->watcher_uri.len, s->watcher_uri.s, 
+                s->presentity_uri.len, s->presentity_uri.s, s->watcher_contact.len, s->watcher_contact.s);
+        LM_DBG("Contact to be removed [%.*s] ", _c->c.len, _c->c.s);
+        if ((s->watcher_contact.len == _c->c.len) && (strncasecmp(s->watcher_contact.s, _c->c.s, _c->c.len) == 0)) {
+            LM_DBG("This contact has a subscription to its own status - so going to delete the subscription");
+            delete_subscriber(_r, s);
+        }
+        s = s->next;
+    }
+    
+    if (exists_ulcb_type(_c->cbs, UL_CONTACT_DELETE)) {
+        run_ul_callbacks(_c->cbs, UL_CONTACT_DELETE, _r, _c);
+    }
+    if (exists_ulcb_type(_r->cbs, UL_IMPU_DELETE_CONTACT)) {
+        run_ul_callbacks(_r->cbs, UL_IMPU_DELETE_CONTACT, _r, _c);
+    }
+
+    
+
+    mem_delete_ucontact(_r, _c);
+
+    return ret;
+}
+
+/*!
+ * \brief Match a contact record to a contact string
+ * \param ptr contact record
+ * \param _c contact string
+ * \return ptr on successfull match, 0 when they not match
+ */
+static inline struct ucontact* contact_match(ucontact_t* ptr, str* _c) {
+    while (ptr) {
+        if ((_c->len == ptr->c.len) && !memcmp(_c->s, ptr->c.s, _c->len)) {
+            return ptr;
+        }
+
+        ptr = ptr->next;
+    }
+    return 0;
+}
+
+/*!
+ * \brief Match a contact record to a contact string and callid
+ * \param ptr contact record
+ * \param _c contact string
+ * \param _callid callid
+ * \return ptr on successfull match, 0 when they not match
+ */
+static inline struct ucontact* contact_callid_match(ucontact_t* ptr,
+        str* _c, str *_callid) {
+    while (ptr) {
+        if ((_c->len == ptr->c.len) && (_callid->len == ptr->callid.len)
+                && !memcmp(_c->s, ptr->c.s, _c->len)
+                && !memcmp(_callid->s, ptr->callid.s, _callid->len)
+                ) {
+            return ptr;
+        }
+
+        ptr = ptr->next;
+    }
+    return 0;
+}
+
+/*!
++ * \brief Match a contact record to a contact string and path
++ * \param ptr contact record
++ * \param _c contact string
++ * \param _path path
++ * \return ptr on successfull match, 0 when they not match
++ */
+static inline struct ucontact* contact_path_match(ucontact_t* ptr, str* _c, str *_path) {
+    /* if no path is preset (in REGISTER request) or use_path is not configured
+       in registrar module, default to contact_match() */
+    if (_path == NULL) return contact_match(ptr, _c);
+
+    while (ptr) {
+        if ((_c->len == ptr->c.len) && (_path->len == ptr->path.len)
+                && !memcmp(_c->s, ptr->c.s, _c->len)
+                && !memcmp(_path->s, ptr->path.s, _path->len)
+                ) {
+            return ptr;
+        }
+
+        ptr = ptr->next;
+    }
+    return 0;
+}
+
+/*!
+ * \brief Get pointer to ucontact with given contact
+ * \param _r record where to search the contacts
+ * \param _c contact string
+ * \param _callid callid
+ * \param _path path
+ * \param _cseq CSEQ number
+ * \param _co found contact
+ * \return 0 - found, 1 - not found, -1 - invalid found,
+ * -2 - found, but to be skipped (same cseq)
+ */
+int get_ucontact(impurecord_t* _r, str* _c, str* _callid, str* _path, int _cseq, struct ucontact** _co) {
+    ucontact_t* ptr;
+    int no_callid;
+
+    ptr = 0;
+    no_callid = 0;
+    *_co = 0;
+
+    switch (matching_mode) {
+        case CONTACT_ONLY:
+            ptr = contact_match(_r->contacts, _c);
+            break;
+        case CONTACT_CALLID:
+            ptr = contact_callid_match(_r->contacts, _c, _callid);
+            no_callid = 1;
+            break;
+        case CONTACT_PATH:
+            ptr = contact_path_match(_r->contacts, _c, _path);
+            break;
+        default:
+            LM_CRIT("unknown matching_mode %d\n", matching_mode);
+            return -1;
+    }
+
+    if (ptr) {
+        /* found -> check callid and cseq */
+        if (no_callid || (ptr->callid.len == _callid->len
+                && memcmp(_callid->s, ptr->callid.s, _callid->len) == 0)) {
+            if (_cseq < ptr->cseq)
+                return -1;
+            if (_cseq == ptr->cseq) {
+                get_act_time();
+                return (ptr->last_modified + cseq_delay > act_time) ? -2 : -1;
+            }
+        }
+        *_co = ptr;
+        return 0;
+    }
+
+    return 1;
+}
+
+/**
+ * Deallocates memory used by a subscription.
+ * \note Must be called with the lock got to avoid races
+ * @param s - the ims_subscription to free
+ */
+void free_ims_subscription_data(ims_subscription *s) {
+    int i, j, k;
+    if (!s) return;
+    /*	lock_get(s->lock); - must be called with the lock got */
+    for (i = 0; i < s->service_profiles_cnt; i++) {
+        for (j = 0; j < s->service_profiles[i].public_identities_cnt; j++) {
+            if (s->service_profiles[i].public_identities[j].public_identity.s)
+                shm_free(s->service_profiles[i].public_identities[j].public_identity.s);
+            if (s->service_profiles[i].public_identities[j].wildcarded_psi.s)
+                shm_free(s->service_profiles[i].public_identities[j].wildcarded_psi.s);
+
+        }
+        if (s->service_profiles[i].public_identities)
+            shm_free(s->service_profiles[i].public_identities);
+
+        for (j = 0; j < s->service_profiles[i].filter_criteria_cnt; j++) {
+            if (s->service_profiles[i].filter_criteria[j].trigger_point) {
+                for (k = 0; k < s->service_profiles[i].filter_criteria[j].trigger_point->spt_cnt; k++) {
+                    switch (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].type) {
+                        case IFC_REQUEST_URI:
+                            if (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].request_uri.s)
+                                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].request_uri.s);
+                            break;
+                        case IFC_METHOD:
+                            if (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].method.s)
+                                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].method.s);
+                            break;
+                        case IFC_SIP_HEADER:
+                            if (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].sip_header.header.s)
+                                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].sip_header.header.s);
+                            if (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].sip_header.content.s)
+                                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].sip_header.content.s);
+                            break;
+                        case IFC_SESSION_CASE:
+                            break;
+                        case IFC_SESSION_DESC:
+                            if (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].session_desc.line.s)
+                                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].session_desc.line.s);
+                            if (s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].session_desc.content.s)
+                                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt[k].session_desc.content.s);
+                            break;
+
+                    }
+                }
+                if (s->service_profiles[i].filter_criteria[j].trigger_point->spt)
+                    shm_free(s->service_profiles[i].filter_criteria[j].trigger_point->spt);
+                shm_free(s->service_profiles[i].filter_criteria[j].trigger_point);
+            }
+            if (s->service_profiles[i].filter_criteria[j].application_server.server_name.s)
+                shm_free(s->service_profiles[i].filter_criteria[j].application_server.server_name.s);
+            if (s->service_profiles[i].filter_criteria[j].application_server.service_info.s)
+                shm_free(s->service_profiles[i].filter_criteria[j].application_server.service_info.s);
+            if (s->service_profiles[i].filter_criteria[j].profile_part_indicator)
+                shm_free(s->service_profiles[i].filter_criteria[j].profile_part_indicator);
+        }
+        if (s->service_profiles[i].filter_criteria)
+            shm_free(s->service_profiles[i].filter_criteria);
+
+        if (s->service_profiles[i].cn_service_auth)
+            shm_free(s->service_profiles[i].cn_service_auth);
+
+        if (s->service_profiles[i].shared_ifc_set)
+            shm_free(s->service_profiles[i].shared_ifc_set);
+    }
+    if (s->service_profiles) shm_free(s->service_profiles);
+    if (s->private_identity.s) shm_free(s->private_identity.s);
+    lock_destroy(s->lock);
+    lock_dealloc(s->lock);
+    shm_free(s);
+
+}
+
+/* update an existing impurecord. if one doesnt exist it will be created.
+ * make sure yuo lock the domain before calling this and unlock it afterwards
+ * return: 0 on success, -1 on failure
+ */
+int update_impurecord(struct udomain* _d, str* public_identity, int reg_state, int barring, int is_primary, ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2, struct impurecord** _r) {
+    int res;
+
+    res = get_impurecord(_d, public_identity, _r);
+    if (res != 0) {
+        if (reg_state != IMPU_NOT_REGISTERED && s) {
+            LM_DBG("No existing impu record for <%.*s>.... creating new one\n", public_identity->len, public_identity->s);
+            res = insert_impurecord(_d, public_identity, reg_state, barring, s, ccf1, ccf2, ecf1, ecf2, _r);
+
+            //for the first time we create an IMPU we must set the primary record (we don't worry about it on updates - ignored)
+            (*_r)->is_primary = is_primary; //TODO = this should prob move to insert_impurecord fn
+
+            if (reg_state == IMPU_UNREGISTERED) {
+                //update unreg expiry so the unreg record is not stored 'forever'
+                (*_r)->expires = time(NULL) + unreg_validity;
+            }
+            if (res != 0) {
+                LM_ERR("Unable to insert new IMPU for <%.*s>\n", public_identity->len, public_identity->s);
+                return -1;
+            } else {
+                run_ul_callbacks(NULL, UL_IMPU_INSERT, *_r, NULL);
+                return 0;
+            }
+        } else {
+            LM_ERR("no IMPU found to update and data not valid to create new one\n");
+            return -1;
+        }
+
+    }
+
+    //if we get here, we have a record to update
+    LM_DBG("updating IMPU record with public identity for <%.*s>\n", public_identity->len, public_identity->s);
+    (*_r)->reg_state = reg_state;
+    if (reg_state == IMPU_UNREGISTERED) {
+        //update unreg expiry so the unreg record is not stored 'forever'
+        (*_r)->expires = time(NULL) + unreg_validity;
+    }
+    if (barring >= 0) (*_r)->barring = barring;
+    if (ccf1) {
+        if ((*_r)->ccf1.s)
+            shm_free((*_r)->ccf1.s);
+        STR_SHM_DUP((*_r)->ccf1, *ccf1, "SHM CCF1");
+    }
+    if (ccf2) {
+        if ((*_r)->ccf2.s)
+            shm_free((*_r)->ccf2.s);
+        STR_SHM_DUP((*_r)->ccf2, *ccf2, "SHM CCF2");
+    }
+    if (ecf1) {
+        if ((*_r)->ecf1.s)
+            shm_free((*_r)->ecf1.s);
+        STR_SHM_DUP((*_r)->ecf1, *ecf1, "SHM ECF1");
+    }
+    if (ecf2) {
+        if ((*_r)->ecf2.s)
+            shm_free((*_r)->ecf2.s);
+        STR_SHM_DUP((*_r)->ecf2, *ecf2, "SHM ECF2");
+    }
+
+    if (s) {
+        LM_DBG("we have a new ims_subscription\n");
+        if ((*_r)->s) {
+            lock_get((*_r)->s->lock);
+            if ((*_r)->s->ref_count == 1) {
+                LM_DBG("freeing user data as no longer referenced\n");
+                free_ims_subscription_data((*_r)->s); //no need to release lock after this. its gone ;)
+                (*_r)->s = 0;
+            } else {
+                (*_r)->s->ref_count--;
+                LM_DBG("new ref count for ims sub is %d\n", (*_r)->s->ref_count);
+                lock_release((*_r)->s->lock);
+            }
+        }
+        (*_r)->s = *s;
+        lock_get((*_r)->s->lock);
+        (*_r)->s->ref_count++;
+        lock_release((*_r)->s->lock);
+    }
+
+    run_ul_callbacks((*_r)->cbs, UL_IMPU_UPDATE, *_r, NULL);
+    return 0;
+
+out_of_memory:
+    unlock_udomain(_d, public_identity);
+    return -1;
+}

+ 185 - 0
modules/usrloc_scscf/impurecord.h

@@ -0,0 +1,185 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 IMPURECORD_H
+#define IMPURECORD_H
+
+
+#include <stdio.h>
+#include <time.h>
+#include "hslot.h"
+#include "../../str.h"
+#include "../../qvalue.h"
+#include "ucontact.h"
+#include "usrloc.h"
+
+struct hslot; /*!< Hash table slot */
+
+/*!
+ * \brief Create and initialize new record structure
+ * \param _dom domain name
+ * \param _aor address of record
+ * \param _r pointer to the new record
+ * \return 0 on success, negative on failure
+ */
+int new_impurecord(str* _dom, str* public_identity, int reg_state, int barring, ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2, impurecord_t** _r);
+
+
+/*!
+ * \brief Free all memory used by the given structure
+ *
+ * Free all memory used by the given structure.
+ * The structure must be removed from all linked
+ * lists first
+ * \param _r freed record list
+ */
+void free_impurecord(impurecord_t* _r);
+
+
+/*!
+ * \brief Print a record, useful for debugging
+ * \param _f print output
+ * \param _r printed record
+ */
+void print_impurecord(FILE* _f, impurecord_t* _r);
+
+
+/*!
+ * \brief Add a new contact in memory
+ *
+ * Add a new contact in memory, contacts are ordered by:
+ * 1) q value, 2) descending modification time
+ * \param _r record this contact belongs to
+ * \param _c contact
+ * \param _ci contact information
+ * \return pointer to new created contact on success, 0 on failure
+ */
+ucontact_t* mem_insert_ucontact(impurecord_t* _r, str* _c, ucontact_info_t* _ci);
+
+
+/*!
+ * \brief Remove the contact from lists in memory
+ * \param _r record this contact belongs to
+ * \param _c removed contact
+ */
+void mem_remove_ucontact(impurecord_t* _r, ucontact_t* _c);
+
+
+/*!
+ * \brief Remove contact in memory from the list and delete it
+ * \param _r record this contact belongs to
+ * \param _c deleted contact
+ */
+void mem_delete_ucontact(impurecord_t* _r, ucontact_t* _c);
+
+
+/*!
+ * \brief Run timer functions depending on the db_mode setting.
+ *
+ * Helper function that run the appropriate timer function, depending
+ * on the db_mode setting.
+ * \param _r processed record
+ */
+void timer_impurecord(impurecord_t* _r);
+
+
+/*!
+ * \brief Delete a record from the database
+ * \param _r deleted record
+ * \return 0 on success, -1 on failure
+ */
+int db_delete_impurecord(impurecord_t* _r);
+
+
+/* ===== Module interface ======== */
+
+
+//int update_user_profile(ims_subscription* s, int assignment_type);
+
+//impurecord_t* update_impurecord(enum pi_reg_states *reg_state,ims_subscription **s, str *ccf1, str *ccf2, str *ecf1, str *ecf2);
+
+void free_ims_subscription_data(ims_subscription *s);
+
+
+/*!
+ * \brief Create and insert new contact into impurecord
+ * \param _r record into the new contact should be inserted
+ * \param _contact contact string
+ * \param _ci contact information
+ * \param _c new created contact
+ * \return 0 on success, -1 on failure
+ */
+int insert_ucontact(impurecord_t* _r, str* _contact,
+		ucontact_info_t* _ci, ucontact_t** _c);
+
+
+/*!
+ * \brief Delete ucontact from impurecord
+ * \param _r record where the contact belongs to
+ * \param _c deleted contact
+ * \return 0 on success, -1 on failure
+ */
+int delete_ucontact(impurecord_t* _r, struct ucontact* _c);
+
+
+/*!
+ * \brief Get pointer to ucontact with given contact
+ * \param _r record where to search the contacts
+ * \param _c contact string
+ * \param _callid callid
+ * \param _path path 
+ * \param _cseq CSEQ number
+ * \param _co found contact
+ * \return 0 - found, 1 - not found, -1 - invalid found, 
+ * -2 - found, but to be skipped (same cseq)
+ */
+int get_ucontact(impurecord_t* _r, str* _c, str* _callid, str* _path,
+		int _cseq,
+		struct ucontact** _co);
+
+int update_impurecord(struct udomain* _d, str* public_identity, int reg_state, int barring, int is_primary, ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2, struct impurecord** _r);
+
+#endif

+ 251 - 0
modules/usrloc_scscf/subscribe.c

@@ -0,0 +1,251 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "subscribe.h"
+#include "ul_mod.h"
+#include "utime.h"
+#include "udomain.h"
+
+
+
+int get_subscriber(impurecord_t* urec, str *presentity_uri, str *watcher_contact, int event, reg_subscriber** r_subscriber) {
+    
+    reg_subscriber* s = NULL;
+
+    if (!watcher_contact || !presentity_uri) {
+        LM_DBG("no valid presentity_uri/watcher contact pair");
+        return 0;
+    }
+
+    if (!urec) {
+        LM_WARN("No impurecord passed.... ignoring");
+        return 1;
+    }
+
+    LM_DBG("Getting existing subscription to reg if it exists for watcher contact <%.*s> and presentity uri <%.*s>", watcher_contact->len, watcher_contact->s,
+            presentity_uri->len, presentity_uri->s);
+
+    s = urec->shead;
+    while (s) {
+        LM_DBG("Scrolling through subscription to reg events in IMPU record list");
+        if (s->event == event &&
+                (s->watcher_contact.len == watcher_contact->len)
+                && (strncasecmp(s->watcher_contact.s, watcher_contact->s, watcher_contact->len) == 0)
+                && (strncasecmp(s->presentity_uri.s, presentity_uri->s, presentity_uri->len) == 0)) {
+            LM_DBG("Found subscription for watcher contact  <%.*s> and presentity_uri <%.*s>", watcher_contact->len, watcher_contact->s, presentity_uri->len, presentity_uri->s);
+            *r_subscriber = s;
+            return 0;
+        }
+        s = s->next;
+    }
+    LM_DBG("Did not find subscription for watcher contact  <%.*s> and presentity_uri <%.*s>", watcher_contact->len, watcher_contact->s, presentity_uri->len, presentity_uri->s);
+    
+    return 1;
+}
+
+reg_subscriber* new_subscriber(str* presentity_uri, str* watcher_uri, str* watcher_contact, subscriber_data_t* subscriber_data) {
+    reg_subscriber *s;
+
+    int len;
+    char *p;
+
+    len = sizeof (reg_subscriber) + subscriber_data->callid->len
+            + subscriber_data->ftag->len + subscriber_data->ttag->len
+            + watcher_contact->len + watcher_uri->len + presentity_uri->len
+            + subscriber_data->record_route->len + subscriber_data->sockinfo_str->len;
+
+    LM_DBG("Creating new subscription to reg");
+
+    s = (reg_subscriber*) shm_malloc(len);
+    if (s == 0) {
+        LM_ERR("no more shm mem (%d)\n", len);
+        return 0;
+    }
+    memset(s, 0, len);
+
+    s->local_cseq = subscriber_data->local_cseq;
+
+    s->event = subscriber_data->event;
+
+    s->expires = subscriber_data->expires;
+
+    p = (char*) (s + 1);
+
+    s->call_id.s = p;
+    s->call_id.len = subscriber_data->callid->len;
+    memcpy(p, subscriber_data->callid->s, subscriber_data->callid->len);
+    p += subscriber_data->callid->len;
+
+    s->to_tag.s = p;
+    s->to_tag.len = subscriber_data->ttag->len;
+    memcpy(p, subscriber_data->ttag->s, subscriber_data->ttag->len);
+    p += subscriber_data->ttag->len;
+
+    s->from_tag.s = p;
+    s->from_tag.len = subscriber_data->ftag->len;
+    memcpy(p, subscriber_data->ftag->s, subscriber_data->ftag->len);
+    p += subscriber_data->ftag->len;
+
+    s->watcher_uri.s = p;
+    s->watcher_uri.len = watcher_uri->len;
+    memcpy(p, watcher_uri->s, watcher_uri->len);
+    p += watcher_uri->len;
+
+    s->watcher_contact.s = p;
+    s->watcher_contact.len = watcher_contact->len;
+    memcpy(p, watcher_contact->s, watcher_contact->len);
+    p += watcher_contact->len;
+
+    s->record_route.s = p;
+    s->record_route.len = subscriber_data->record_route->len;
+    memcpy(p, subscriber_data->record_route->s, subscriber_data->record_route->len);
+    p += subscriber_data->record_route->len;
+
+    s->sockinfo_str.s = p;
+    s->sockinfo_str.len = subscriber_data->sockinfo_str->len;
+    memcpy(p, subscriber_data->sockinfo_str->s, subscriber_data->sockinfo_str->len);
+    p += subscriber_data->sockinfo_str->len;
+
+    s->presentity_uri.s = p;
+    s->presentity_uri.len = presentity_uri->len;
+    memcpy(p, presentity_uri->s, presentity_uri->len);
+    p += presentity_uri->len;
+
+    if (p != (((char*) s) + len)) {
+        LM_CRIT("buffer overflow\n");
+        free_subscriber(s);
+        return 0;
+    }
+
+    return s;
+}
+
+int add_subscriber(impurecord_t* urec,
+        str *watcher_uri, str *watcher_contact,
+        subscriber_data_t* subscriber_data, reg_subscriber** _reg_subscriber) {
+
+    LM_DBG("Adding reg subscription to IMPU record");
+
+    if (!urec) {
+        LM_ERR("no presentity impu record provided\n");
+        return 0;
+    }
+    reg_subscriber *s = new_subscriber(&urec->public_identity, watcher_uri, watcher_contact, subscriber_data);
+
+    if (!s) return 1;
+
+    LM_DBG("Adding new subscription to IMPU record list");
+    s->next = 0;
+    s->prev = urec->stail;
+    if (urec->stail) urec->stail->next = s;
+    urec->stail = s;
+    if (!urec->shead) urec->shead = s;
+
+    *_reg_subscriber = s;
+    return 0;
+}
+
+
+int update_subscriber(impurecord_t* urec,
+        str *watcher_uri, str *watcher_contact,
+        int *expires, reg_subscriber** _reg_subscriber) {
+
+
+    reg_subscriber *rs = *_reg_subscriber;
+    if (expires) {
+        rs->expires = *expires;
+        return 1;
+    } else {
+        LM_ERR("Failed to update subscriber as expires is expires is null");
+        return 0;
+    }
+}
+
+void external_delete_subscriber(reg_subscriber *s, udomain_t* _t) {
+    LM_DBG("Deleting subscriber");
+    impurecord_t* urec;
+
+    LM_DBG("Updating reg subscription in IMPU record");
+
+    lock_udomain(_t, &s->presentity_uri);
+    int res = get_impurecord(_t, &s->presentity_uri, &urec);
+    if (res != 0) {
+        unlock_udomain(_t, &s->presentity_uri);
+        return;
+    }
+
+    if (urec->shead == s) urec->shead = s->next;
+    else s->prev->next = s->next;
+    if (urec->stail == s) urec->stail = s->prev;
+    else s->next->prev = s->prev;
+    LM_DBG("About to free subscriber memory");
+    free_subscriber(s);
+
+    unlock_udomain(_t, &s->presentity_uri);
+
+}
+
+void delete_subscriber(impurecord_t* urec, reg_subscriber *s) {
+    LM_DBG("Deleting subscriber");
+    if (urec->shead == s) urec->shead = s->next;
+    else s->prev->next = s->next;
+    if (urec->stail == s) urec->stail = s->prev;
+    else s->next->prev = s->prev;
+    LM_DBG("About to free subscriber memory");
+    free_subscriber(s);
+}
+
+void free_subscriber(reg_subscriber *s) {
+    LM_DBG("Freeing subscriber memory");
+    if (s) {
+        shm_free(s);
+    }
+
+
+}
+
+int valid_subscriber(reg_subscriber *s) {
+    return (s->expires > act_time);
+}

+ 73 - 0
modules/usrloc_scscf/subscribe.h

@@ -0,0 +1,73 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "usrloc.h"
+
+reg_subscriber* new_subscriber(str* presentity_uri, str* watcher_uri,
+		str* watcher_contact, subscriber_data_t* subscriber_data);
+
+//API declarations
+int get_subscriber(impurecord_t* urec, str *watcher_uri,
+		str *watcher_contact, int event, reg_subscriber** r_subscriber);
+
+int add_subscriber(impurecord_t* urec, str *watcher_uri,
+		str *watcher_contact, subscriber_data_t* subscriber_data,
+		reg_subscriber** _reg_subscriber);
+
+
+int update_subscriber(impurecord_t* urec,
+        str *watcher_uri, str *watcher_contact,
+        int *expires, reg_subscriber** _reg_subscriber);
+
+
+
+
+void delete_subscriber(impurecord_t* urec, reg_subscriber *s);
+
+void external_delete_subscriber(reg_subscriber *s, udomain_t* _t);
+
+void free_subscriber(reg_subscriber *s);
+
+int valid_subscriber(reg_subscriber *s);

+ 357 - 0
modules/usrloc_scscf/ucontact.c

@@ -0,0 +1,357 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ *
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ *
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus.
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ *
+ *
+
+ *! \file
+ *  \brief USRLOC - Usrloc contact handling functions
+ *  \ingroup usrloc
+ *
+ * - Module: \ref usrloc
+ */
+
+#include "ucontact.h"
+#include <string.h>             /* memcpy */
+#include "../../mem/shm_mem.h"
+#include "../../ut.h"
+#include "../../ip_addr.h"
+#include "../../socket_info.h"
+#include "../../dprint.h"
+#include "../../lib/srdb1/db.h"
+#include "ul_mod.h"
+#include "ul_callback.h"
+#include "usrloc.h"
+#include "impurecord.h"
+#include "ucontact.h"
+#include "usrloc.h"
+
+/*!
+ * \brief Create a new contact structure
+ * \param _dom domain
+ * \param _aor address of record
+ * \param _contact contact string
+ * \param _ci contact informations
+ * \return new created contact on success, 0 on failure
+ */
+ucontact_t* new_ucontact(str* _dom, str* _aor, str* _contact, ucontact_info_t* _ci) {
+    ucontact_t *c;
+
+    c = (ucontact_t*) shm_malloc(sizeof (ucontact_t));
+    if (!c) {
+        LM_ERR("no more shm memory\n");
+        return 0;
+    }
+    memset(c, 0, sizeof (ucontact_t));
+
+    //setup callback list
+    c->cbs = (struct ulcb_head_list*) shm_malloc(sizeof (struct ulcb_head_list));
+    if (c->cbs == 0) {
+        LM_CRIT("no more shared mem\n");
+        goto error;
+    }
+    c->cbs->first = 0;
+    c->cbs->reg_types = 0;
+
+    if (shm_str_dup(&c->c, _contact) < 0) goto error;
+    if (shm_str_dup(&c->callid, _ci->callid) < 0) goto error;
+    if (shm_str_dup(&c->user_agent, _ci->user_agent) < 0) goto error;
+
+    if (_ci->received.s && _ci->received.len) {
+        if (shm_str_dup(&c->received, &_ci->received) < 0) goto error;
+    }
+    if (_ci->path && _ci->path->len) {
+        if (shm_str_dup(&c->path, _ci->path) < 0) goto error;
+    }
+
+    c->domain = _dom;
+    c->aor = _aor;
+    c->expires = _ci->expires;
+    c->q = _ci->q;
+    c->sock = _ci->sock;
+    c->cseq = _ci->cseq;
+    c->state = CS_NEW;
+    c->flags = _ci->flags;
+    c->cflags = _ci->cflags;
+    c->methods = _ci->methods;
+    c->last_modified = _ci->last_modified;
+
+    return c;
+error:
+    LM_ERR("no more shm memory\n");
+    if (c->path.s) shm_free(c->path.s);
+    if (c->received.s) shm_free(c->received.s);
+    if (c->user_agent.s) shm_free(c->user_agent.s);
+    if (c->callid.s) shm_free(c->callid.s);
+    if (c->c.s) shm_free(c->c.s);
+    shm_free(c);
+    return 0;
+}
+
+/*!
+ * \brief Free all memory associated with given contact structure
+ * \param _c freed contact
+ */
+void free_ucontact(ucontact_t* _c) {
+    struct ul_callback *cbp, *cbp_tmp;
+
+    if (!_c) return;
+    if (_c->path.s) shm_free(_c->path.s);
+    if (_c->received.s) shm_free(_c->received.s);
+    if (_c->user_agent.s) shm_free(_c->user_agent.s);
+    if (_c->callid.s) shm_free(_c->callid.s);
+    if (_c->c.s) shm_free(_c->c.s);
+
+    //free callback list
+    for (cbp = _c->cbs->first; cbp;) {
+        cbp_tmp = cbp;
+        cbp = cbp->next;
+        if (cbp_tmp->param)
+            shm_free(cbp_tmp->param);
+        shm_free(cbp_tmp);
+    }
+    shm_free(_c->cbs);
+    shm_free(_c);
+}
+
+/*!
+ * \brief Print contact, for debugging purposes only
+ * \param _f output file
+ * \param _c printed contact
+ */
+void print_ucontact(FILE* _f, ucontact_t* _c) {
+    time_t t = time(0);
+    char* st;
+
+    switch (_c->state) {
+        case CS_NEW: st = "CS_NEW";
+            break;
+        case CS_SYNC: st = "CS_SYNC";
+            break;
+        case CS_DIRTY: st = "CS_DIRTY";
+            break;
+        default: st = "CS_UNKNOWN";
+            break;
+    }
+
+    fprintf(_f, "~~~Contact(%p)~~~\n", _c);
+    fprintf(_f, "domain    : '%.*s'\n", _c->domain->len, ZSW(_c->domain->s));
+    fprintf(_f, "aor       : '%.*s'\n", _c->aor->len, ZSW(_c->aor->s));
+    fprintf(_f, "Contact   : '%.*s'\n", _c->c.len, ZSW(_c->c.s));
+    fprintf(_f, "Expires   : ");
+    if (_c->expires == 0) {
+        fprintf(_f, "Permanent\n");
+    } else if (_c->expires == UL_EXPIRED_TIME) {
+        fprintf(_f, "Deleted\n");
+    } else if (t > _c->expires) {
+        fprintf(_f, "Expired\n");
+    } else {
+        fprintf(_f, "%u\n", (unsigned int) (_c->expires - t));
+    }
+    fprintf(_f, "q         : %s\n", q2str(_c->q, 0));
+    fprintf(_f, "Call-ID   : '%.*s'\n", _c->callid.len, ZSW(_c->callid.s));
+    fprintf(_f, "CSeq      : %d\n", _c->cseq);
+    fprintf(_f, "User-Agent: '%.*s'\n",
+            _c->user_agent.len, ZSW(_c->user_agent.s));
+    fprintf(_f, "received  : '%.*s'\n",
+            _c->received.len, ZSW(_c->received.s));
+    fprintf(_f, "Path      : '%.*s'\n",
+            _c->path.len, ZSW(_c->path.s));
+    fprintf(_f, "State     : %s\n", st);
+    fprintf(_f, "Flags     : %u\n", _c->flags);
+    if (_c->sock) {
+        fprintf(_f, "Sock      : %.*s (%p)\n",
+                _c->sock->sock_str.len, _c->sock->sock_str.s, _c->sock);
+    } else {
+        fprintf(_f, "Sock      : none (null)\n");
+    }
+    fprintf(_f, "Methods   : %u\n", _c->methods);
+    fprintf(_f, "next      : %p\n", _c->next);
+    fprintf(_f, "prev      : %p\n", _c->prev);
+    fprintf(_f, "~~~/Contact~~~~\n");
+}
+
+/*!
+ * \brief Update existing contact in memory with new values
+ * \param _c contact
+ * \param _ci contact informations
+ * \return 0 on success, -1 on failure
+ */
+int mem_update_ucontact(ucontact_t* _c, ucontact_info_t* _ci) {
+#define update_str(_old,_new) \
+	do{\
+		if ((_old)->len < (_new)->len) { \
+			ptr = (char*)shm_malloc((_new)->len); \
+			if (ptr == 0) { \
+				LM_ERR("no more shm memory\n"); \
+				return -1; \
+			}\
+			memcpy(ptr, (_new)->s, (_new)->len);\
+			if ((_old)->s) shm_free((_old)->s);\
+			(_old)->s = ptr;\
+		} else {\
+			memcpy((_old)->s, (_new)->s, (_new)->len);\
+		}\
+		(_old)->len = (_new)->len;\
+	} while(0)
+
+    char* ptr;
+
+    /* No need to update Callid as it is constant
+     * per ucontact (set at insert time)  -bogdan */
+
+    update_str(&_c->user_agent, _ci->user_agent);
+
+    if (_ci->received.s && _ci->received.len) {
+        update_str(&_c->received, &_ci->received);
+    } else {
+        if (_c->received.s) shm_free(_c->received.s);
+        _c->received.s = 0;
+        _c->received.len = 0;
+    }
+
+    if (_ci->path) {
+        update_str(&_c->path, _ci->path);
+    } else {
+        if (_c->path.s) shm_free(_c->path.s);
+        _c->path.s = 0;
+        _c->path.len = 0;
+    }
+
+    LM_DBG("Setting contact expires to %d which is in %d seconds time\n", (unsigned int) _ci->expires, (unsigned int) (_ci->expires - time(NULL)));
+    _c->sock = _ci->sock;
+    _c->expires = _ci->expires;
+    _c->q = _ci->q;
+    _c->cseq = _ci->cseq;
+    _c->methods = _ci->methods;
+    _c->last_modified = _ci->last_modified;
+    _c->flags = _ci->flags;
+    _c->cflags = _ci->cflags;
+
+    return 0;
+}
+
+/*!
+ * \brief Remove a contact from list belonging to a certain record
+ * \param _r record the contact belongs
+ * \param _c removed contact
+ */
+static inline void unlink_contact(struct impurecord* _r, ucontact_t* _c) {
+    if (_c->prev) {
+        _c->prev->next = _c->next;
+        if (_c->next) {
+            _c->next->prev = _c->prev;
+        }
+    } else {
+        _r->contacts = _c->next;
+        if (_c->next) {
+            _c->next->prev = 0;
+        }
+    }
+}
+
+/*!
+ * \brief Insert a new contact into the list at the correct position
+ * \param _r record that holds the sorted contacts
+ * \param _c new contact
+ */
+static inline void update_contact_pos(struct impurecord* _r, ucontact_t* _c) {
+    ucontact_t *pos, *ppos;
+
+    if (_c->next == 0) //if its last its newest already
+        return;
+
+    if (_c->prev == 0) //must be only element in the list
+        return;
+
+    if (_c->next->expires < _c->expires) {//changed place required
+        ppos = _c->next;
+        pos = _c->next->next;
+        //unlink _c
+        _c->prev->next = _c->next;
+        _c->next->prev = _c->prev;
+        _c->prev = _c->next = 0;
+
+        while (pos) {
+            if (_c->expires < pos->expires)
+                break;
+            ppos = pos;
+            pos = pos->next;
+        }
+
+        ppos->next = _c;
+        _c->prev = ppos;
+        if (pos) {
+            _c->next = pos;
+            pos->prev = _c;
+        }
+    }
+}
+
+/*!
+ * \brief Update ucontact with new values
+ * \param _r record the contact belongs to
+ * \param _c updated contact
+ * \param _ci new contact informations
+ * \return 0 on success, -1 on failure
+ */
+int update_ucontact(struct impurecord* _r, ucontact_t* _c, ucontact_info_t* _ci) {
+    /* we have to update memory in any case, but database directly
+     * only in db_mode 1 */
+    if (mem_update_ucontact(_c, _ci) < 0) {
+        LM_ERR("failed to update memory\n");
+        return -1;
+    }
+
+    /* run callbacks for UPDATE event */
+    if (exists_ulcb_type(_c->cbs, UL_CONTACT_UPDATE)) {
+        LM_DBG("exists callback for type= UL_CONTACT_UPDATE\n");
+        run_ul_callbacks(_c->cbs, UL_CONTACT_UPDATE, _r, _c);
+    }
+    if (exists_ulcb_type(_r->cbs, UL_IMPU_UPDATE_CONTACT)) {
+        run_ul_callbacks(_r->cbs, UL_IMPU_UPDATE_CONTACT, _r, _c);
+    }
+
+    update_contact_pos(_r, _c);
+
+    return 0;
+}

+ 135 - 0
modules/usrloc_scscf/ucontact.h

@@ -0,0 +1,135 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ *
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ *
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus.
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ *
+ *
+ *! \file
+ *  \brief USRLOC - Usrloc contact structure
+ *  \ingroup usrloc
+ */
+
+
+#ifndef UCONTACT_H
+#define UCONTACT_H
+
+
+#include <stdio.h>
+#include "usrloc.h"
+
+
+/*! \brief ancient time used for marking the contacts forced to expired */
+#define UL_EXPIRED_TIME 10
+
+
+/*!
+ * \brief Create a new contact structure
+ * \param _dom domain
+ * \param _aor address of record
+ * \param _contact contact string
+ * \param _ci contact informations
+ * \return new created contact on success, 0 on failure
+ */
+ucontact_t* new_ucontact(str* _dom, str* _aor, str* _contact,
+		ucontact_info_t* _ci);
+
+
+/*!
+ * \brief Free all memory associated with given contact structure
+ * \param _c freed contact
+ */
+void free_ucontact(ucontact_t* _c);
+
+
+/*!
+ * \brief Print contact, for debugging purposes only
+ * \param _f output file
+ * \param _c printed contact
+ */
+void print_ucontact(FILE* _f, ucontact_t* _c);
+
+
+/*!
+ * \brief Update existing contact in memory with new values
+ * \param _c contact
+ * \param _ci contact informations
+ * \return 0
+ */
+int mem_update_ucontact(ucontact_t* _c, ucontact_info_t *_ci);
+
+
+/* ==== Database related functions ====== */
+
+/*!
+ * \brief Insert contact into the database
+ * \param _c inserted contact
+ * \return 0 on success, -1 on failure
+ */
+int db_insert_ucontact(ucontact_t* _c);
+
+
+/*!
+ * \brief Update contact in the database
+ * \param _c updated contact
+ * \return 0 on success, -1 on failure
+ */
+int db_update_ucontact(ucontact_t* _c);
+
+
+/*!
+ * \brief Delete contact from the database
+ * \param _c deleted contact
+ * \return 0 on success, -1 on failure
+ */
+int db_delete_ucontact(ucontact_t* _c);
+
+/* ====== Module interface ====== */
+
+/*!
+ * \brief Update ucontact with new values
+ * \param _r record the contact belongs to
+ * \param _c updated contact
+ * \param _ci new contact informations
+ * \return 0 on success, -1 on failure
+ */
+int update_ucontact(struct impurecord* _r, ucontact_t* _c, ucontact_info_t* _ci);
+
+#endif

+ 631 - 0
modules/usrloc_scscf/udomain.c

@@ -0,0 +1,631 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ *
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ *
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus.
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ *
+ *
+
+ *! \file
+ *  \brief USRLOC - Userloc domain handling functions
+ *  \ingroup usrloc
+ *
+ * - Module: \ref usrloc
+ */
+
+#include "udomain.h"
+#include <string.h>
+#include "../../hashes.h"
+#include "../../parser/parse_methods.h"
+#include "../../mem/shm_mem.h"
+#include "../../dprint.h"
+#include "../../lib/srdb1/db.h"
+#include "../../socket_info.h"
+#include "../../ut.h"
+#include "ul_mod.h"            /* usrloc module parameters */
+#include "usrloc.h"
+#include "utime.h"
+#include "usrloc.h"
+#include "bin_utils.h"
+
+#ifdef STATISTICS
+static char *build_stat_name( str* domain, char *var_name)
+{
+	int n;
+	char *s;
+	char *p;
+
+	n = domain->len + 1 + strlen(var_name) + 1;
+	s = (char*)shm_malloc( n );
+	if (s==0) {
+		LM_ERR("no more shm mem\n");
+		return 0;
+	}
+	memcpy( s, domain->s, domain->len);
+	p = s + domain->len;
+	*(p++) = '-';
+	memcpy( p , var_name, strlen(var_name));
+	p += strlen(var_name);
+	*(p++) = 0;
+	return s;
+}
+#endif
+
+
+/*!
+ * \brief Create a new domain structure
+ * \param  _n is pointer to str representing name of the domain, the string is
+ * not copied, it should point to str structure stored in domain list
+ * \param _s is hash table size
+ * \param _d new created domain
+ * \return 0 on success, -1 on failure
+ */
+int new_udomain(str* _n, int _s, udomain_t** _d)
+{
+	int i;
+#ifdef STATISTICS
+	char *name;
+#endif
+
+	/* Must be always in shared memory, since
+	 * the cache is accessed from timer which
+	 * lives in a separate process
+	 */
+	*_d = (udomain_t*)shm_malloc(sizeof(udomain_t));
+	if (!(*_d)) {
+		LM_ERR("new_udomain(): No memory left\n");
+		goto error0;
+	}
+	memset(*_d, 0, sizeof(udomain_t));
+
+	(*_d)->table = (hslot_t*)shm_malloc(sizeof(hslot_t) * _s);
+	if (!(*_d)->table) {
+		LM_ERR("no memory left 2\n");
+		goto error1;
+	}
+
+	(*_d)->name = _n;
+
+	for(i = 0; i < _s; i++) {
+		init_slot(*_d, &((*_d)->table[i]), i);
+	}
+
+	(*_d)->size = _s;
+
+#ifdef STATISTICS
+	/* register the statistics */
+	if ( (name=build_stat_name(_n,"users"))==0 || register_stat("usrloc",
+	name, &(*_d)->users, STAT_NO_RESET|STAT_SHM_NAME)!=0 ) {
+		LM_ERR("failed to add stat variable\n");
+		goto error2;
+	}
+	if ( (name=build_stat_name(_n,"contacts"))==0 || register_stat("usrloc",
+	name, &(*_d)->contacts, STAT_NO_RESET|STAT_SHM_NAME)!=0 ) {
+		LM_ERR("failed to add stat variable\n");
+		goto error2;
+	}
+	if ( (name=build_stat_name(_n,"expires"))==0 || register_stat("usrloc",
+	name, &(*_d)->expires, STAT_SHM_NAME)!=0 ) {
+		LM_ERR("failed to add stat variable\n");
+		goto error2;
+	}
+#endif
+
+	return 0;
+#ifdef STATISTICS
+error2:
+	shm_free((*_d)->table);
+#endif
+error1:
+	shm_free(*_d);
+error0:
+	return -1;
+}
+
+
+/*!
+ * \brief Free all memory allocated for the domain
+ * \param _d freed domain
+ */
+void free_udomain(udomain_t* _d)
+{
+	int i;
+
+	if (_d->table) {
+		for(i = 0; i < _d->size; i++) {
+			lock_ulslot(_d, i);
+			deinit_slot(_d->table + i);
+			unlock_ulslot(_d, i);
+		}
+		shm_free(_d->table);
+	}
+	shm_free(_d);
+}
+
+
+/*!
+ * \brief Returns a static dummy impurecord for temporary usage
+ * \param _d domain (needed for the name)
+ * \param _aor address of record
+ * \param _r new created urecord
+ */
+static inline void get_static_impurecord(udomain_t* _d, str* _aor,	struct impurecord** _r)
+{
+	static struct impurecord r;
+
+	memset( &r, 0, sizeof(struct impurecord) );
+	r.public_identity = *_aor;
+	r.domain = _d->name;
+	*_r = &r;
+}
+
+
+/*!
+ * \brief Debugging helper function
+ */
+void print_udomain(FILE* _f, udomain_t* _d)
+{
+	int i;
+	int max=0, slot=0, n=0;
+	struct impurecord* r;
+	fprintf(_f, "---Domain---\n");
+	fprintf(_f, "name : '%.*s'\n", _d->name->len, ZSW(_d->name->s));
+	fprintf(_f, "size : %d\n", _d->size);
+	fprintf(_f, "table: %p\n", _d->table);
+	/*fprintf(_f, "lock : %d\n", _d->lock); -- can be a structure --andrei*/
+	fprintf(_f, "\n");
+	for(i=0; i<_d->size; i++)
+	{
+		r = _d->table[i].first;
+		n += _d->table[i].n;
+		if(max<_d->table[i].n){
+			max= _d->table[i].n;
+			slot = i;
+		}
+		while(r) {
+			print_impurecord(_f, r);
+			r = r->next;
+		}
+	}
+	fprintf(_f, "\nMax slot: %d (%d/%d)\n", max, slot, n);
+	fprintf(_f, "\n---/Domain---\n");
+}
+
+
+inline int time2str(time_t _v, char* _s, int* _l)
+{
+	struct tm* t;
+	int l;
+
+	if ((!_s) || (!_l) || (*_l < 2)) {
+		LM_ERR("Invalid parameter value\n");
+		return -1;
+	}
+
+	*_s++ = '\'';
+
+	/* Convert time_t structure to format accepted by the database */
+	t = localtime(&_v);
+	l = strftime(_s, *_l -1, "%Y-%m-%d %H:%M:%S", t);
+
+	if (l == 0) {
+		LM_ERR("Error during time conversion\n");
+		/* the value of _s is now unspecified */
+		_s = NULL;
+		_l = 0;
+		return -1;
+	}
+	*_l = l;
+
+	*(_s + l) = '\'';
+	*_l = l + 2;
+	return 0;
+}
+
+/*!
+ * \brief Insert a new record into domain in memory
+ * \param _d domain the record belongs to
+ * \param _aor address of record
+ * \param _r new created record
+ * \return 0 on success, -1 on failure
+ */
+int mem_insert_impurecord(struct udomain* _d, str* public_identity, int reg_state, int barring,
+		ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2,
+		struct impurecord** _r) {
+	int sl;
+
+	if (new_impurecord(_d->name, public_identity, reg_state, barring, s, ccf1, ccf2, ecf1,
+			ecf2, _r) < 0) {
+		LM_ERR("creating impurecord failed\n");
+		return -1;
+	}
+	LM_DBG("Successfully parsed user data\n");
+
+	sl = ((*_r)->aorhash) & (_d->size - 1);
+	slot_add(&_d->table[sl], *_r);
+	update_stat( _d->users, 1);
+	return 0;
+}
+
+
+/*!
+ * \brief Remove a record from domain in memory
+ * \param _d domain the record belongs to
+ * \param _r deleted record
+ */
+void mem_delete_impurecord(udomain_t* _d, struct impurecord* _r)
+{
+	slot_rem(_r->slot, _r);
+	free_impurecord(_r);
+	update_stat( _d->users, -1);
+}
+
+
+/*!
+ * \brief Run timer handler for given domain
+ * \param _d domain
+ */
+void mem_timer_udomain(udomain_t* _d)
+{
+	struct impurecord* ptr, *t, *temp_impu;
+	int i, j, k;
+	ims_public_identity* impu;
+	unsigned int sl;
+
+	time_t time_now = time(NULL);
+
+	for(i=0; i<_d->size; i++)
+	{
+		lock_ulslot(_d, i);
+
+		ptr = _d->table[i].first;
+
+		while(ptr) {
+			timer_impurecord(ptr);
+			t = ptr;
+			ptr = ptr->next;
+
+			if (t->reg_state == IMPU_NOT_REGISTERED) {
+				//remove it - housekeeping - not sure why its still here...?
+				if (exists_ulcb_type(t->cbs, UL_IMPU_NR_DELETE))
+					run_ul_callbacks(t->cbs, UL_IMPU_NR_DELETE, t, NULL);
+				mem_delete_impurecord(_d, t);
+			} else if (t->reg_state == IMPU_UNREGISTERED) {//Remove IMPU record if it is in state IMPU_UNREGISTERED and has expired
+				if (time_now >= t->expires) {
+					if (exists_ulcb_type(t->cbs, UL_IMPU_UNREG_EXPIRED))
+						run_ul_callbacks(t->cbs, UL_IMPU_UNREG_EXPIRED, t, NULL);
+					mem_delete_impurecord(_d, t);
+				}
+			} else if (t->reg_state != IMPU_UNREGISTERED && t->contacts == 0) { /* Remove the entire record if it is empty IFF it is not an UNREGISTERED RECORD */
+																				/* TS 23.228 5.3.2.1 (release 11) */
+				//we only want to send one SAR for each implicit IMPU set
+				//make sure all IMPU's associated with this set are de-registered before calling the callbacks
+				int first=1;
+				int this_is_first = 0;
+
+				lock_get(t->s->lock);
+				for (k = 0; k < t->s->service_profiles_cnt; k++){
+					for (j = 0;j < t->s->service_profiles[k].public_identities_cnt;j++) {
+						impu = &(t->s->service_profiles[k].public_identities[j]);
+
+						sl = core_hash(&impu->public_identity, 0, _d->size);
+						if (sl != i)
+							lock_udomain(_d, &impu->public_identity);
+
+						if (first) {
+							first = 0; //dont do anything - we will leave this impu to be processed as normal
+							if (!strncmp(impu->public_identity.s, t->public_identity.s, t->public_identity.len)) {
+								//we are the first in the implicit set
+								this_is_first = 1;
+							}
+						} else {
+							//set all other implicits to not registered
+							if (update_impurecord(_d, &impu->public_identity, IMPU_NOT_REGISTERED,
+														-1/*barring*/, 0/*is_primary*/, NULL, NULL, NULL, NULL, NULL, &temp_impu) != 0) {
+								LM_ERR("Unable to update impurecord for <%.*s>\n", impu->public_identity.len, impu->public_identity.s);
+							}
+						}
+						if (sl != i)
+							unlock_udomain(_d, &impu->public_identity);
+					}
+				}
+				lock_release(t->s->lock);
+
+				if (this_is_first) {
+					//now run a normal callback on our
+					if (exists_ulcb_type(t->cbs, UL_IMPU_REG_NC_DELETE))
+						run_ul_callbacks(t->cbs, UL_IMPU_REG_NC_DELETE, t, NULL);
+					mem_delete_impurecord(_d, t);
+				}
+			}
+		}
+		unlock_ulslot(_d, i);
+	}
+}
+
+
+/*!
+ * \brief Get lock for a domain
+ * \param _d domain
+ * \param _aor adress of record, used as hash source for the lock slot
+ */
+void lock_udomain(udomain_t* _d, str* _aor)
+{
+	unsigned int sl;
+	sl = core_hash(_aor, 0, _d->size);
+
+#ifdef GEN_LOCK_T_PREFERED
+	lock_get(_d->table[sl].lock);
+#else
+	ul_lock_idx(_d->table[sl].lockidx);
+#endif
+}
+
+
+/*!
+ * \brief Release lock for a domain
+ * \param _d domain
+ * \param _aor address of record, uses as hash source for the lock slot
+ */
+void unlock_udomain(udomain_t* _d, str* _aor)
+{
+	unsigned int sl;
+	sl = core_hash(_aor, 0, _d->size);
+#ifdef GEN_LOCK_T_PREFERED
+	lock_release(_d->table[sl].lock);
+#else
+	ul_release_idx(_d->table[sl].lockidx);
+#endif
+}
+
+/*!
+ * \brief  Get lock for a slot
+ * \param _d domain
+ * \param i slot number
+ */
+void lock_ulslot(udomain_t* _d, int i)
+{
+#ifdef GEN_LOCK_T_PREFERED
+	lock_get(_d->table[i].lock);
+#else
+	ul_lock_idx(_d->table[i].lockidx);
+#endif
+}
+
+
+/*!
+ * \brief Release lock for a slot
+ * \param _d domain
+ * \param i slot number
+ */
+void unlock_ulslot(udomain_t* _d, int i)
+{
+#ifdef GEN_LOCK_T_PREFERED
+	lock_release(_d->table[i].lock);
+#else
+	ul_release_idx(_d->table[i].lockidx);
+#endif
+}
+
+
+/*!
+ * \brief Create and insert a new record
+ * \param _d domain to insert the new record
+ * \param _aor address of the record
+ * \param _r new created record
+ * \return return 0 on success, -1 on failure
+ */
+int insert_impurecord(struct udomain* _d, str* public_identity, int reg_state, int barring,
+		ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2,
+		struct impurecord** _r) {
+
+//	ims_subscription* s = 0;
+//	/*check we can parse XML user data*/
+//	if (xml_data->s && xml_data->len > 0) {
+//		s = parse_user_data(*xml_data);
+//		if (!s) {
+//			LM_ERR("Unable to parse XML user data from SAA\n");
+//			goto error;
+//		}
+//	}
+    if (mem_insert_impurecord(_d, public_identity, reg_state, barring, s, ccf1, ccf2, ecf1, ecf2, _r) < 0) {
+        LM_ERR("inserting record failed\n");
+        goto error;
+    }
+    return 0;
+
+error:
+//    if (s) {
+//    	free_ims_subscription_data(s);
+//    }
+    return -1;
+}
+
+
+/*!
+ * \brief Obtain a impurecord pointer if the impurecord exists in domain
+ * \param _d domain to search the record
+ * \param _aor address of record
+ * \param _r new created record
+ * \return 0 if a record was found, 1 if nothing could be found
+ */
+int get_impurecord(udomain_t* _d, str* public_identity, struct impurecord** _r) {
+	unsigned int sl, i, aorhash;
+	impurecord_t* r;
+
+	/* search in cache */
+	aorhash = core_hash(public_identity, 0, 0);
+	sl = aorhash & (_d->size - 1);
+	r = _d->table[sl].first;
+
+	for (i = 0; i < _d->table[sl].n; i++) {
+		if ((r->aorhash == aorhash) && (r->public_identity.len == public_identity->len)
+				&& !memcmp(r->public_identity.s, public_identity->s, public_identity->len)) {
+			*_r = r;
+			return 0;
+		}
+
+		r = r->next;
+	}
+	return 1; /* Nothing found */
+}
+
+/*!
+ * \brief Delete a impurecord from domain
+ * \param _d domain where the record should be deleted
+ * \param _aor address of record
+ * \param _r deleted record
+ * \return 0 on success, -1 if the record could not be deleted
+ */
+int delete_impurecord(udomain_t* _d, str* _aor, struct impurecord* _r)
+{
+	struct ucontact* c, *t;
+
+    LM_DBG("Deleting IMPURECORD\n");
+
+	if (_r==0) {
+		if (get_impurecord(_d, _aor, &_r) > 0) {
+			return 0;
+		}
+	}
+
+    c = _r->contacts;
+	while(c) {
+		t = c;
+		c = c->next;
+		if (delete_ucontact(_r, t) < 0) {
+			LM_ERR("deleting contact failed\n");
+			return -1;
+		}
+	}
+
+	if (exists_ulcb_type(_r->cbs, UL_IMPU_DELETE)) {
+	        run_ul_callbacks(_r->cbs, UL_IMPU_DELETE, _r, 0);
+	}
+
+	mem_delete_impurecord(_d, _r);
+	return 0;
+}
+
+/*
+ * get all IMPUs as string from a subscription related to an impurecord. apply filter for barring (assumed to be called with lock on impurec)
+ * barring-1 get all barred
+ * barring-0 get all unbarred
+ * barring-(-1) get all records
+ * NB. Remember to free the block of memory pointed to by impus (pkg_malloc)
+ */
+int get_impus_from_subscription_as_string(udomain_t* _d, impurecord_t* impu_rec, int barring, str** impus, int* num_impus)
+{
+	int i, j, count;
+	*num_impus = 0;
+	*impus = 0;
+	ims_public_identity* impi;
+	int bytes_needed = 0;
+	int len = 0;
+
+	LM_DBG("getting IMPU subscription set\n");
+
+	if (!impu_rec){
+		LM_ERR("no impu record provided\n");
+		return 1;
+	}
+
+	if (!impu_rec->s) {
+		LM_DBG("no subscription associated with impu\n");
+		return 0;
+	}
+
+	lock_get(impu_rec->s->lock);
+	for (i = 0; i < impu_rec->s->service_profiles_cnt; i++) {
+		for (j = 0; j < impu_rec->s->service_profiles[i].public_identities_cnt; j++) {
+			impi = &(impu_rec->s->service_profiles[i].public_identities[j]);
+			if (barring<0) {
+				//get all records
+				bytes_needed += impi->public_identity.len;
+				(*num_impus)++;
+			} else {
+				if (impi->barring == barring) {
+					//add the record to the list
+					bytes_needed += impi->public_identity.len;
+					(*num_impus)++;
+				}
+			}
+		}
+	}
+	LM_DBG("num of records returned is %d and we need %d bytes\n", *num_impus, bytes_needed);
+
+	len = (sizeof(str)*(*num_impus)) + bytes_needed;
+	*impus = (str*)pkg_malloc(len);
+	char* ptr = (char*)(*impus + *num_impus);
+
+	//now populate the data
+	count=0;
+	for (i = 0; i < impu_rec->s->service_profiles_cnt; i++) {
+		for (j = 0; j < impu_rec->s->service_profiles[i].public_identities_cnt; j++) {
+			impi = &(impu_rec->s->service_profiles[i].public_identities[j]);
+			if (barring < 0) {
+				//get all records
+				(*impus)[count].s = ptr;
+				memcpy(ptr, impi->public_identity.s, impi->public_identity.len);
+				(*impus)[count].len = impi->public_identity.len;
+				ptr += impi->public_identity.len;
+				count++;
+			} else {
+				if (impi->barring == barring) {
+					//add the record to the list
+					(*impus)[count].s = ptr;
+					memcpy(ptr, impi->public_identity.s, impi->public_identity.len);
+					(*impus)[count].len = impi->public_identity.len;
+					ptr += impi->public_identity.len;
+					count++;
+				}
+			}
+		}
+	}
+
+	if (ptr != ((char*)*impus + len)) {
+		LM_CRIT("buffer overflow\n");
+		return 1;
+	}
+
+	lock_release(impu_rec->s->lock);
+
+	return 0;
+}

+ 204 - 0
modules/usrloc_scscf/udomain.h

@@ -0,0 +1,204 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ *
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ *
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus.
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ *
+ *
+
+
+ *! \file
+ *  \brief USRLOC - Usrloc domain structure
+ *  \ingroup usrloc
+ */
+
+#ifndef UDOMAIN_H
+#define UDOMAIN_H
+
+
+#include <stdio.h>
+#include "../../lib/kcore/statistics.h"
+#include "../../locking.h"
+#include "../../str.h"
+#include "../../lib/srdb1/db.h"
+#include "impurecord.h"
+#include "hslot.h"
+#include "usrloc.h"
+
+struct hslot;   /*!< Hash table slot */
+struct impurecord; /*!< Usrloc record */
+
+
+/*! \brief
+ * The structure represents a usrloc domain
+ */
+struct udomain {
+	str* name;                 /*!< Domain name (NULL terminated) */
+	int size;                  /*!< Hash table size */
+	struct hslot* table;       /*!< Hash table - array of collision slots */
+	/* statistics */
+	stat_var *users;           /*!< no of registered users */
+	stat_var *contacts;        /*!< no of registered contacts */
+	stat_var *expires;         /*!< no of expires */
+};
+
+
+/*!
+ * \brief Create a new domain structure
+ * \param  _n is pointer to str representing name of the domain, the string is
+ * not copied, it should point to str structure stored in domain list
+ * \param _s is hash table size
+ * \param _d new created domain
+ * \return 0 on success, -1 on failure
+ */
+int new_udomain(str* _n, int _s, udomain_t** _d);
+
+
+/*!
+ * \brief Free all memory allocated for the domain
+ * \param _d freed domain
+ */
+void free_udomain(udomain_t* _d);
+
+
+/*!
+ * \brief Print udomain, debugging helper function
+ */
+void print_udomain(FILE* _f, udomain_t* _d);
+
+
+/*!
+ * \brief Load all records from a udomain
+ *
+ * Load all records from a udomain, useful to populate the
+ * memory cache on startup.
+ * \param _c database connection
+ * \param _d loaded domain
+ * \return 0 on success, -1 on failure
+ */
+/*!
+ * \brief Run timer handler for given domain
+ * \param _d domain
+ */
+void mem_timer_udomain(udomain_t* _d);
+
+
+int mem_insert_impurecord(struct udomain* _d, str* public_identity, int reg_state, int barring, ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2, struct impurecord** _r);
+
+
+/*!
+ * \brief Remove a record from domain in memory
+ * \param _d domain the record belongs to
+ * \param _r deleted record
+ */
+void mem_delete_impurecord(udomain_t* _d, struct impurecord* _r);
+
+
+/*! \brief
+ * Timer handler for given domain
+ */
+void lock_udomain(udomain_t* _d, str *_aor);
+
+
+/*!
+ * \brief Release lock for a domain
+ * \param _d domain
+ * \param _aor address of record, uses as hash source for the lock slot
+ */
+void unlock_udomain(udomain_t* _d, str *_aor);
+
+
+/*!
+ * \brief  Get lock for a slot
+ * \param _d domain
+ * \param i slot number
+ */
+void lock_ulslot(udomain_t* _d, int i);
+
+/*!
+ * \brief Release lock for a slot
+ * \param _d domain
+ * \param i slot number
+ */
+void unlock_ulslot(udomain_t* _d, int i);
+
+/* ===== module interface ======= */
+
+
+/*!
+ * \brief Create and insert a new record
+ * \param _d domain to insert the new record
+ * \param _aor address of the record
+ * \param _r new created record
+ * \return return 0 on success, -1 on failure
+ */
+int insert_impurecord(struct udomain* _d, str* public_identity, int reg_state, int barring,
+		ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2,
+		struct impurecord** _r);
+
+
+/*!
+ * \brief Obtain a impurecord pointer if the impurecord exists in domain
+ * \param _d domain to search the record
+ * \param _aor address of record
+ * \param _r new created record
+ * \return 0 if a record was found, 1 if nothing could be found
+ */
+int get_impurecord(udomain_t* _d, str* _aor, struct impurecord** _r);
+
+
+/*!
+ * \brief Delete a impurecord from domain
+ * \param _d domain where the record should be deleted
+ * \param _aor address of record
+ * \param _r deleted record
+ * \return 0 on success, -1 if the record could not be deleted
+ */
+int delete_impurecord(udomain_t* _d, str* _aor, struct impurecord* _r);
+
+
+//get all IMPUs as string from a subscription related to an impurecord. apply filter for barring (assumed to be called with lock on impurec)
+//barring-1 get all barred
+//barring-0 get all unbarred
+//barring-(-1) get all records
+int get_impus_from_subscription_as_string(udomain_t* _d, impurecord_t* impu_rec, int barring, str** impus, int* num_impus);
+
+
+#endif

+ 196 - 0
modules/usrloc_scscf/ul_callback.c

@@ -0,0 +1,196 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ *
+ * History:
+ * --------
+ *  2004-03-16  created (bogdan)
+ */
+
+/*! \file
+ *  \brief USRLOC - Callback functions
+ *  \ingroup usrloc
+ *
+ * - Module: \ref usrloc
+ */
+
+
+#include <stdlib.h>
+
+#include "../../dprint.h"
+#include "../../error.h"
+#include "../../mem/shm_mem.h"
+#include "ul_callback.h"
+#include "ucontact.h"
+
+struct ulcb_head_list* ulcb_list = 0;
+
+
+
+int init_ulcb_list(void)
+{
+	ulcb_list = (struct ulcb_head_list*)shm_malloc
+		( sizeof(struct ulcb_head_list) );
+	if (ulcb_list==0) {
+		LM_CRIT("no more shared mem\n");
+		return -1;
+	}
+	ulcb_list->first = 0;
+	ulcb_list->reg_types = 0;
+	return 1;
+}
+
+
+void destroy_ulcb_list(void)
+{
+	struct ul_callback *cbp, *cbp_tmp;
+
+	if (!ulcb_list)
+		return;
+
+	for( cbp=ulcb_list->first; cbp ; ) {
+		cbp_tmp = cbp;
+		cbp = cbp->next;
+		if (cbp_tmp->param) shm_free( cbp_tmp->param );
+		shm_free( cbp_tmp );
+	}
+
+	shm_free(ulcb_list);
+}
+
+
+
+/*! \brief 
+	register a callback function 'f' for 'types' mask of events;
+*/
+int register_ulcb( struct impurecord* r, struct ucontact* c, int types, ul_cb f, void *param )
+{
+	struct ul_callback *cbp;
+	int contact_cb=0;
+	int impurecord_cb=0;
+
+	struct ulcb_head_list* cb_list=0;
+
+	if (types & UL_IMPU_INSERT) {
+		if (types != UL_IMPU_INSERT) {
+			LM_CRIT("UL_IMPU_INSERT type must be registered alone!\n");
+			return -1;
+		}
+		cb_list = ulcb_list;
+	} else if (types & UL_CONTACT_INSERT) {
+		if (types != UL_CONTACT_INSERT) {
+			LM_CRIT("UL_CONTACT_INSERT type must be registered alone!\n");
+			return -1;
+		}
+		cb_list = ulcb_list;
+	} else {
+		contact_cb = (types & UL_CONTACT_DELETE)
+				|| (types & UL_CONTACT_EXPIRE) || (types & UL_CONTACT_UPDATE);
+		impurecord_cb = (types & UL_IMPU_DELETE)
+				|| (types & UL_IMPU_UPDATE)
+				|| (types & UL_IMPU_REG_NC_DELETE)
+				|| (types & UL_IMPU_NR_DELETE)
+				|| (types & UL_IMPU_UNREG_EXPIRED)
+				|| (types & UL_IMPU_UPDATE_CONTACT)
+                                || (types & UL_IMPU_DELETE_CONTACT)
+                                || (types & UL_IMPU_EXPIRE_CONTACT)
+                                || (types & UL_IMPU_NEW_CONTACT);
+                
+
+		if (contact_cb && impurecord_cb) {
+			LM_CRIT("can't register IMPU and Contact callback in same call\n");
+			return -1;
+		}
+		if (contact_cb && !c) {
+			LM_CRIT("no contact provided for contact callback\n");
+			return -1;
+		}
+		if (impurecord_cb && !r) {
+			LM_CRIT("no impurecord provided for contact callback\n");
+			return -1;
+		}
+	}
+
+	/* are the callback types valid?... */
+	if ( types<0 || types>ULCB_MAX ) {
+		LM_CRIT("invalid callback types: mask=%d\n",types);
+		return E_BUG;
+	}
+	/* we don't register null functions */
+	if (f==0) {
+		LM_CRIT("null callback function\n");
+		return E_BUG;
+	}
+
+	if (contact_cb) {
+		LM_DBG("installing callback for SCSCF contact with type [%d]\n", types);
+		cb_list = c->cbs;
+	} else if (impurecord_cb) {
+		LM_DBG("installing callback for SCSCF IMPU record with type [%d]\n", types);
+		cb_list = r->cbs;
+	}
+
+	/* build a new callback structure */
+	if (!(cbp=(struct ul_callback*)shm_malloc(sizeof( struct ul_callback)))) {
+		LM_ERR("no more share mem\n");
+		return E_OUT_OF_MEM;
+	}
+
+	/* link it into the proper place... */
+	cbp->next = cb_list->first;
+	cb_list->first = cbp;
+	cb_list->reg_types |= types;
+	/* ... and fill it up */
+	cbp->callback = f;
+	cbp->param = param;
+	cbp->types = types;
+	if (cbp->next)
+		cbp->id = cbp->next->id+1;
+	else
+		cbp->id = 0;
+
+	return 1;
+}
+
+
+

+ 127 - 0
modules/usrloc_scscf/ul_callback.h

@@ -0,0 +1,127 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 _UL_CALLBACKS_H
+#define _UL_CALLBACKS_H
+
+#include "../../dprint.h"
+
+/* forward declaration for ucontact_t */
+struct ucontact;
+struct impurecord;
+
+#define UL_CONTACT_INSERT      	(1<<0)
+#define UL_CONTACT_UPDATE      	(1<<1)
+#define UL_CONTACT_DELETE      	(1<<2)
+#define UL_CONTACT_EXPIRE      	(1<<3)
+#define UL_IMPU_REG_NC_DELETE	(1<<4)		/* reg, no contacts - deleted */
+#define UL_IMPU_NR_DELETE		(1<<5)		/* Not registered - deleted */
+#define UL_IMPU_UNREG_EXPIRED	(1<<6)		/* Unregistered time expired */
+#define UL_IMPU_DELETE			(1<<7)		/* explicit impu delete - for example thru API */
+#define UL_IMPU_INSERT		   	(1<<8)		/* new IMPU record has been added */
+#define UL_IMPU_UPDATE		   	(1<<9)		/* IMPU record has been updated */
+#define UL_IMPU_NEW_CONTACT		(1<<10)		/* a new contact has been inserted for this IMPU */
+#define UL_IMPU_UPDATE_CONTACT		(1<<11)		/* a new contact has been inserted for this IMPU */
+#define UL_IMPU_DELETE_CONTACT		(1<<12)		/* a new contact has been inserted for this IMPU */
+#define UL_IMPU_EXPIRE_CONTACT		(1<<13)		/* a new contact has been inserted for this IMPU */
+#define ULCB_MAX               	((1<<14)-1)
+
+/*! \brief callback function prototype */
+typedef void (ul_cb) (struct impurecord* r, struct ucontact *c, int type, void *param);
+/*! \brief register callback function prototype */
+typedef int (*register_ulcb_t)( struct impurecord* r, struct ucontact *c, int cb_types, ul_cb f, void *param);
+
+
+struct ul_callback {
+	int id;                      /*!< id of this callback - useless */
+	int types;                   /*!< types of events that trigger the callback*/
+	ul_cb* callback;             /*!< callback function */
+	void *param;                 /*!< param to be passed to callback function */
+	struct ul_callback* next;
+};
+
+struct ulcb_head_list {
+	struct ul_callback *first;
+	int reg_types;
+};
+
+
+extern struct ulcb_head_list*  ulcb_list;
+
+
+static inline int exists_ulcb_type(struct ulcb_head_list* list, int types) {
+	if (list==NULL)
+		return (ulcb_list->reg_types|types);
+	else
+		return (list->reg_types|types);
+}
+
+int init_ulcb_list(void);
+
+void destroy_ulcb_list(void);
+
+
+/*! \brief register a callback for several types of events */
+int register_ulcb( struct impurecord* r, struct ucontact* c, int types, ul_cb f, void *param );
+
+/*! \brief run all transaction callbacks for an event type */
+static inline void run_ul_callbacks( struct ulcb_head_list* cb_list, int type , struct impurecord *r, struct ucontact *c)
+{
+	struct ul_callback *cbp;
+
+	if (cb_list == NULL) { //must be for global list
+		cb_list = ulcb_list;
+	}
+
+	for (cbp=cb_list->first; cbp; cbp=cbp->next)  {
+		if(cbp->types&type) {
+			LM_DBG("impurecord=%p, contact=%p, callback type %d/%d, id %d entered\n",
+				r, c, type, cbp->types, cbp->id );
+			cbp->callback( r, c, type, cbp->param );
+		}
+	}
+}
+
+#endif

+ 276 - 0
modules/usrloc_scscf/ul_mod.c

@@ -0,0 +1,276 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include <stdio.h>
+#include "ul_mod.h"
+#include "../../sr_module.h"
+#include "../../dprint.h"
+#include "../../rpc_lookup.h"
+#include "../../timer.h"     /* register_timer */
+#include "../../globals.h"   /* is_main */
+#include "../../ut.h"        /* str_init */
+#include "dlist.h"           /* register_udomain */
+#include "udomain.h"         /* {insert,delete,get,release}_urecord */
+#include "impurecord.h"         /* {insert,delete,get}_ucontact */
+#include "ucontact.h"        /* update_ucontact */
+#include "ul_rpc.h"
+#include "ul_callback.h"
+#include "usrloc.h"
+#include "hslot_sp.h"
+
+MODULE_VERSION
+
+#define DEFAULT_DBG_FILE "/var/log/usrloc_debug"
+
+static FILE *debug_file;
+
+static int mod_init(void);                          /*!< Module initialization function */
+static void destroy(void);                          /*!< Module destroy function */
+static void timer(unsigned int ticks, void* param); /*!< Timer handler */
+static int child_init(int rank);                    /*!< Per-child init function */
+
+extern int bind_usrloc(usrloc_api_t* api);
+extern int ul_locks_no;
+extern int subs_locks_no;
+/*
+ * Module parameters and their default values
+ */
+str usrloc_debug_file = str_init(DEFAULT_DBG_FILE);
+char *scscf_user_data_dtd=0;      		/* Path to "CxDataType.dtd" */
+char *scscf_user_data_xsd=0;			/* Path to "CxDataType_Rel6.xsd" or "CxDataType_Rel7.xsd" */
+int timer_interval  = 90;				/*!< Timer interval in seconds */
+int desc_time_order = 0;				/*!< By default do not enable timestamp ordering */
+int usrloc_debug 	= 0;
+int scscf_support_wildcardPSI = 0;
+int unreg_validity = 1800;				/*!< default validity time in secs for unreg assignment to SCSCF */
+int maxcontact = 0;						/*!< max number of contacts allowed per IMPU */
+int maxcontact_behaviour = 0;			/*!< max contact behaviour - 0-disabled(default),1-reject,2-overwrite*/
+
+int ul_fetch_rows = 2000;				/*!< number of rows to fetch from result */
+int ul_hash_size = 9;
+int subs_hash_size = 9;					/*!<number of ims subscription slots*/
+
+/* flags */
+unsigned int nat_bflag = (unsigned int)-1;
+unsigned int init_flag = 0;
+
+/*! \brief
+ * Exported functions
+ */
+static cmd_export_t cmds[] = {
+	{"ul_bind_usrloc",        (cmd_function)bind_usrloc,        1, 0, 0, 0},
+	{0, 0, 0, 0, 0, 0}
+};
+
+
+/*! \brief
+ * Exported parameters 
+ */
+static param_export_t params[] = {
+	{"timer_interval",    	INT_PARAM, &timer_interval  },
+	{"desc_time_order",   	INT_PARAM, &desc_time_order },
+	{"matching_mode",     	INT_PARAM, &matching_mode   },
+	{"cseq_delay",        	INT_PARAM, &cseq_delay      },
+	{"fetch_rows",        	INT_PARAM, &ul_fetch_rows   },
+	{"hash_size",         	INT_PARAM, &ul_hash_size    },
+	{"subs_hash_size",    	INT_PARAM, &subs_hash_size  },
+	{"nat_bflag",         	INT_PARAM, &nat_bflag       },
+	{"usrloc_debug_file", 	STR_PARAM, &usrloc_debug_file.s},
+	{"enable_debug_file", 	INT_PARAM, &usrloc_debug},
+    {"user_data_dtd",     	STR_PARAM, &scscf_user_data_dtd},
+    {"user_data_xsd",     	STR_PARAM, &scscf_user_data_xsd},
+    {"support_wildcardPSI",	INT_PARAM, &scscf_support_wildcardPSI},
+    {"unreg_validity",		INT_PARAM, &unreg_validity},
+    {"maxcontact_behaviour", INT_PARAM, &maxcontact_behaviour},
+    {"maxcontact",			INT_PARAM, &maxcontact},
+	{0, 0, 0}
+};
+
+
+stat_export_t mod_stats[] = {
+	{"registered_users" ,  STAT_IS_FUNC, (stat_var**)get_number_of_users  },
+	{0,0,0}
+};
+
+
+static mi_export_t mi_cmds[] = {
+	{ 0, 0, 0, 0, 0}
+};
+
+
+struct module_exports exports = {
+	"usrloc_scscf",
+	DEFAULT_DLFLAGS, /*!< dlopen flags */
+	cmds,       /*!< Exported functions */
+	params,     /*!< Export parameters */
+	mod_stats,  /*!< exported statistics */
+	mi_cmds,    /*!< exported MI functions */
+	0,          /*!< exported pseudo-variables */
+	0,          /*!< extra processes */
+	mod_init,   /*!< Module initialization function */
+	0,          /*!< Response function */
+	destroy,    /*!< Destroy function */
+	child_init  /*!< Child initialization function */
+};
+
+
+/*! \brief
+ * Module initialization function
+ */
+static int mod_init(void) {
+
+	if (usrloc_debug){
+		LM_INFO("Logging usrloc records to %.*s\n", usrloc_debug_file.len, usrloc_debug_file.s);
+		debug_file = fopen(usrloc_debug_file.s, "a");
+		fprintf(debug_file, "starting\n");
+		fflush(debug_file);
+	}
+
+#ifdef STATISTICS
+	/* register statistics */
+	if (register_module_stats( exports.name, mod_stats)!=0 ) {
+		LM_ERR("failed to register core statistics\n");
+		return -1;
+	}
+#endif
+
+	if (rpc_register_array(ul_rpc) != 0) {
+		LM_ERR("failed to register RPC commands\n");
+		return -1;
+	}
+
+	/* Compute the lengths of string parameters */
+	usrloc_debug_file.len = strlen(usrloc_debug_file.s);
+
+	if (ul_hash_size <= 1)
+		ul_hash_size = 512;
+	else
+		ul_hash_size = 1 << ul_hash_size;
+	ul_locks_no = ul_hash_size;
+
+	if (subs_hash_size <= 1)
+		subs_hash_size = 512;
+	else
+		subs_hash_size = 1 << subs_hash_size;
+	subs_locks_no = subs_hash_size;
+
+	/* check matching mode */
+	switch (matching_mode) {
+		case CONTACT_ONLY:
+		case CONTACT_CALLID:
+		case CONTACT_PATH:
+			break;
+		default:
+			LM_ERR("invalid matching mode %d\n", matching_mode);
+	}
+
+	if (ul_init_locks() != 0) {
+		LM_ERR("locks array initialization failed\n");
+		return -1;
+	}
+
+	if (subs_init_locks() != 0) {
+		LM_ERR("IMS Subscription locks array initialization failed\n");
+		return -1;
+	}
+
+	/* Register cache timer */
+	register_timer(timer, 0, timer_interval);
+
+	/* init the callbacks list */
+	if (init_ulcb_list() < 0) {
+		LM_ERR("usrloc/callbacks initialization failed\n");
+		return -1;
+	}
+
+	if (nat_bflag == (unsigned int) -1) {
+		nat_bflag = 0;
+	} else if (nat_bflag >= 8 * sizeof(nat_bflag)) {
+		LM_ERR("bflag index (%d) too big!\n", nat_bflag);
+		return -1;
+	} else {
+		nat_bflag = 1 << nat_bflag;
+	}
+
+	init_flag = 1;
+
+	return 0;
+}
+
+
+static int child_init(int rank)
+{
+	return 0;
+}
+
+
+/*! \brief
+ * Module destroy function
+ */
+static void destroy(void)
+{
+	free_all_udomains();
+	ul_destroy_locks();
+
+	/* free callbacks list */
+	destroy_ulcb_list();
+}
+
+
+/*! \brief
+ * Timer handler
+ */
+static void timer(unsigned int ticks, void* param) {
+	if (usrloc_debug) {
+		print_all_udomains(debug_file);
+		fflush(debug_file);
+	}
+
+	LM_DBG("Syncing cache\n");
+	if (synchronize_all_udomains() != 0) {
+		LM_ERR("synchronizing cache failed\n");
+	}
+}
+

+ 87 - 0
modules/usrloc_scscf/ul_mod.h

@@ -0,0 +1,87 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ *
+ * History:
+ * ---------
+ */
+
+/*! \file
+ *  \brief USRLOC - Usrloc module interface
+ *  \ingroup usrloc
+ */
+
+#ifndef UL_MOD_H
+#define UL_MOD_H
+
+
+#include "../../lib/srdb1/db.h"
+#include "../../str.h"
+
+
+/*
+ * Module parameters
+ */
+
+
+#define UL_TABLE_VERSION 1004
+
+#include "../../lib/ims/useful_defs.h"
+
+extern int timer_interval;
+extern int desc_time_order;
+extern int cseq_delay;
+extern int ul_fetch_rows;
+extern int ul_hash_size;
+
+/*
+ * Matching algorithms
+ */
+#define CONTACT_ONLY            (0)
+#define CONTACT_CALLID          (1)
+#define CONTACT_PATH		(2)
+
+extern int matching_mode;
+
+
+#endif /* UL_MOD_H */

+ 236 - 0
modules/usrloc_scscf/ul_rpc.c

@@ -0,0 +1,236 @@
+/*
+ * $Id$
+ *
+ * usrloc module
+ *
+ * Copyright (C) 2009 Daniel-Constantin Mierla (asipto.com).
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "../../ip_addr.h"
+#include "../../dprint.h"
+
+#include "ul_rpc.h"
+#include "dlist.h"
+#include "ucontact.h"
+#include "udomain.h"
+
+static const char* ul_rpc_dump_doc[2] = 	{"Dump SCSCF user location tables", 0 };
+static const char* ul_rpc_showimpu_doc[2] = {"Dump SCSCF IMPU information", 0 };
+
+static unsigned int contact_buflen = 0;
+static str contact_buf = {0,0};
+
+static void ul_rpc_show_impu(rpc_t* rpc, void* ctx)
+{
+	int i, j;
+	str impu;
+	int res;
+	udomain_t* domain;
+	struct impurecord* impu_rec;
+	ucontact_t* contact;
+	void *ah, *sh, *ch, *cdh, *sdh, *sph, *spi;
+	char numstr[21+16]; //enough for all numbers up to 64bits + longest length of field name (16)
+
+	if (rpc->scan(ctx, "S", &impu) < 1) {
+		rpc->fault(ctx, 400, "required IMPU argument");
+		return;
+	}
+
+	LM_DBG("searching for impu <%.*s>\n", impu.len, impu.s);
+
+	res = get_udomain("location", &domain);
+	if (res != 0) {
+		LM_ERR("Failed to get domain\n");
+		return;
+	}
+
+	lock_udomain(domain, &impu);
+	res = get_impurecord(domain, &impu, &impu_rec);
+	if (res != 0) {
+		unlock_udomain(domain, &impu);
+		return;
+	}
+
+	//now print the data for this IMPU record
+	if (rpc->add(ctx, "{", &ah) < 0) {
+		rpc->fault(ctx, 500, "Internal error creating IMPU struct");
+		unlock_udomain(domain, &impu);
+		return;
+	}
+
+	if (rpc->struct_add(ah, "SsdSSSS",
+			"impu", &impu,
+			"state", get_impu_regstate_as_string(impu_rec->reg_state),
+			"barring", impu_rec->barring,
+			"ccf1", &impu_rec->ccf1,
+			"ccf2", &impu_rec->ccf2,
+			"ecf1", &impu_rec->ecf1,
+			"ecf2", &impu_rec->ecf2
+			) < 0) {
+		rpc->fault(ctx, 500, "Internal error adding impu data");
+		unlock_udomain(domain, &impu);
+		return;
+	}
+
+	if (rpc->struct_add(ah, "{", "subscription", &sh) < 0) {
+		rpc->fault(ctx, 500, "Internal error adding impu subscription data");
+		unlock_udomain(domain, &impu);
+		return;
+	}
+
+	ims_subscription* subscription = impu_rec->s;
+	lock_get(subscription->lock);
+	//add subscription data
+	if (rpc->struct_add(sh, "S{", "impi", &subscription->private_identity, "service profiles", &sph) < 0) {
+		rpc->fault(ctx, 500, "Internal error adding impu subscription data");
+		lock_release(subscription->lock);
+		unlock_udomain(domain, &impu);
+		return;
+	}
+
+	//add subscription detail information
+	for (i=0; i<subscription->service_profiles_cnt; i++) {
+		sprintf(numstr, "%d", i+1);
+		if (rpc->struct_add(sph, "{", numstr, &sdh) < 0) {
+			rpc->fault(ctx, 500, "Internal error adding impu subscription detail data");
+			lock_release(subscription->lock);
+			unlock_udomain(domain, &impu);
+			return;
+		}
+		if (rpc->struct_add(sdh, "{", "impus", &spi) < 0) {
+				rpc->fault(ctx, 500, "Internal error adding impu subscription data");
+				lock_release(subscription->lock);
+				unlock_udomain(domain, &impu);
+				return;
+		}
+
+		for (j=0; j<subscription->service_profiles[i].public_identities_cnt; j++) {
+			sprintf(numstr, "%d", j+1);
+			if (rpc->struct_add(spi, "S", numstr, &subscription->service_profiles[i].public_identities[j].public_identity) < 0) {
+					rpc->fault(ctx, 500, "Internal error adding impu subscription detail data");
+					lock_release(subscription->lock);
+					unlock_udomain(domain, &impu);
+					return;
+			}
+		}
+	}
+
+	lock_release(subscription->lock);
+
+	//add contact data
+	if (rpc->struct_add(ah, "{", "contacts", &ch) < 0) {
+		rpc->fault(ctx, 500, "Internal error adding impu contact data");
+		unlock_udomain(domain, &impu);
+		return;
+	}
+	contact = impu_rec->contacts;
+	while (contact) {
+		//contact is not null terminated so we need to create a null terminated version
+		if (!contact_buf.s || (contact_buf.len <= contact->c.len)) {
+			if (contact_buf.s && contact_buf.len <= contact->c.len){
+				pkg_free(contact_buf.s);
+			}
+			contact_buflen = contact->c.len + 1;
+			contact_buf.s = (char*)pkg_malloc(contact_buflen);
+			if (!contact_buf.s) {
+				LM_ERR("no more pkg memory");
+				rpc->fault(ctx, 500, "Internal error adding impu contact header");
+				unlock_udomain(domain, &impu);
+				return;
+			}
+		}
+		memcpy(contact_buf.s, contact->c.s, contact->c.len);
+		contact_buf.s[contact->c.len] = '\0';
+		contact_buf.len = contact->c.len;
+
+		LM_DBG("contact is %s\n", contact_buf.s);
+		if (rpc->struct_add(ch, "{", contact_buf.s, &cdh) < 0) {
+			rpc->fault(ctx, 500, "Internal error adding impu contact header");
+			unlock_udomain(domain, &impu);
+			return;
+		}
+		if (rpc->struct_add(cdh, "dS",
+				"expires", contact->expires - time(NULL),
+				"client", &contact->user_agent) < 0) {
+			rpc->fault(ctx, 500, "Internal error adding impu contact data");
+			unlock_udomain(domain, &impu);
+			return;
+		}
+		contact = contact->next;
+	}
+
+	unlock_udomain(domain, &impu);
+
+}
+
+static void ul_rpc_dump(rpc_t* rpc, void* ctx)
+{
+	struct impurecord* r;
+	dlist_t* dl;
+	udomain_t* dom;
+	time_t t;
+	ucontact_t* c;
+	str empty_str = { "[not set]", 9 };
+	void* th;
+	void* ah;
+	void* ih;
+	void* vh;
+	void* sh;
+	void* dh;
+	int max, n, i;
+
+	t = time(0);
+	for( dl=root ; dl ; dl=dl->next ) {
+		dom = dl->d;
+		if (rpc->add(ctx, "{", &th) < 0)
+		{
+			rpc->fault(ctx, 500, "Internal error creating top rpc");
+			return;
+		}
+		if(rpc->struct_add(th, "Sd",
+					"Domain",  &dl->name,
+					"Size",    (int)dom->size)<0)
+		{
+			rpc->fault(ctx, 500, "Internal error creating inner struct");
+			return;
+		}
+
+		for(i=0,n=0,max=0; i<dom->size; i++) {
+			n += dom->table[i].n;
+			if(max<dom->table[i].n)
+				max= dom->table[i].n;
+		}
+
+		/* extra attributes node */
+		if(rpc->struct_add(th, "{", "Stats",    &sh)<0)
+		{
+			rpc->fault(ctx, 500, "Internal error creating stats struct");
+			return;
+		}
+		if(rpc->struct_add(sh, "dd", "Records", n, "Max-Slots", max)<0)
+		{
+			rpc->fault(ctx, 500, "Internal error adding stats");
+			return;
+		}
+	}
+}
+
+rpc_export_t ul_rpc[] = {
+	{"ulscscf.status",   	ul_rpc_dump,   ul_rpc_dump_doc,   0},
+	{"ulscscf.showimpu",   	ul_rpc_show_impu,   ul_rpc_showimpu_doc,   0},
+	{0, 0, 0, 0}
+};
+
+

+ 28 - 0
modules/usrloc_scscf/ul_rpc.h

@@ -0,0 +1,28 @@
+/*
+ * $Id$
+ *
+ * usrloc module
+ *
+ * Copyright (C) 2009 Daniel-Constantin Mierla (asipto.com).
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _UL_RPC_H_
+#define _UL_RPC_H_
+
+#include "../../rpc.h"
+
+extern rpc_export_t ul_rpc[];
+
+#endif

+ 106 - 0
modules/usrloc_scscf/usrloc.c

@@ -0,0 +1,106 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "usrloc.h"
+#include "dlist.h"
+#include "impurecord.h"
+#include "ucontact.h"
+#include "udomain.h"
+#include "subscribe.h"
+#include "../../sr_module.h"
+#include "ul_mod.h"
+
+/*! nat branch flag */
+extern unsigned int nat_bflag;
+/*! flag to protect against wrong initialization */
+extern unsigned int init_flag;
+
+/*!
+ * \brief usrloc module API export bind function
+ * \param api usrloc API
+ * \return 0 on success, -1 on failure
+ */
+int bind_usrloc(usrloc_api_t* api) {
+	if (!api) {
+		LM_ERR("invalid parameter value\n");
+		return -1;
+	}
+	if (init_flag == 0) {
+		LM_ERR("configuration error - trying to bind to usrloc module"
+				" before being initialized\n");
+		return -1;
+	}
+
+	api->register_udomain = register_udomain;
+	api->get_udomain = get_udomain;
+
+	api->insert_impurecord = insert_impurecord;
+	api->delete_impurecord = delete_impurecord;
+	api->get_impurecord = get_impurecord;
+	api->update_impurecord = update_impurecord;
+
+	api->lock_udomain = lock_udomain;
+	api->unlock_udomain = unlock_udomain;
+
+	api->get_all_ucontacts = get_all_ucontacts;
+	api->insert_ucontact = insert_ucontact;
+	api->delete_ucontact = delete_ucontact;
+	api->get_ucontact = get_ucontact;
+	api->update_ucontact = update_ucontact;
+
+	api->get_subscriber = get_subscriber;
+	api->add_subscriber = add_subscriber;
+	api->external_delete_subscriber = external_delete_subscriber;
+	api->update_subscriber = update_subscriber;
+
+	api->get_impus_from_subscription_as_string = get_impus_from_subscription_as_string;
+        
+    api->register_ulcb = register_ulcb;
+
+	//api->update_user_profile = update_user_profile;
+	api->nat_flag = nat_bflag;
+
+	return 0;
+}

+ 453 - 0
modules/usrloc_scscf/usrloc.h

@@ -0,0 +1,453 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 USRLOC_H
+#define USRLOC_H
+
+#include <time.h>
+#include "ul_callback.h"
+#include "../../qvalue.h"
+#include "../../str.h"
+#include "../../modules/tm/dlg.h"
+#include "../cdp/diameter_ims_code_avp.h"
+
+/*IMPU states*/
+#define IMS_USER_NOT_REGISTERED 0		/** User not registered */
+#define IMS_USER_REGISTERED 1			/** User registered */
+#define IMS_USER_UNREGISTERED -1		/** User unregistered (not registered but with services for unregistered state) */
+
+/** Conjunctive Normal Format */
+#define IFC_CNF 1
+/** Disjunctive Normal Format */
+#define IFC_DNF 0
+
+#define IFC_UNKNOWN -1				/** unknown SPT type */
+#define IFC_REQUEST_URI 1			/** SPT for checking the Request-URI */
+#define IFC_METHOD 2				/** SPT for checking the Method */
+#define IFC_SIP_HEADER 3			/** SPT for checking a SIP Header */
+#define IFC_SESSION_CASE 4			/** SPT for checking the Session Case */
+#define IFC_SESSION_DESC 5			/** SPT for checking a SDP line */
+
+#define IFC_ORIGINATING_SESSION 0	/** Session case originating */
+#define IFC_TERMINATING_SESSION 1	/** Session case terminating */
+#define IFC_TERMINATING_UNREGISTERED 2	/** Session case terminating to unregistered user*/
+
+#define IFC_INITIAL_REGISTRATION 	1		/** Initial Registration */
+#define IFC_RE_REGISTRATION 		1<<1	/** Re-Registration */
+#define IFC_DE_REGISTRATION 		1<<2	/** De-Registration */
+
+#define IFC_NO_DEFAULT_HANDLING -1	/** No default handling */
+#define IFC_SESSION_CONTINUED 0		/** Session should continue on failure to contact AS */
+#define IFC_SESSION_TERMINATED 1	/** Session should be terminated on failure to contact AS */
+
+
+/*forward declaration necessary for udomain*/
+struct udomain;
+typedef struct udomain udomain_t;
+
+
+typedef struct _subscriber_data {
+	int event;
+	int expires;
+	str* callid;
+	str* ftag;
+	str* ttag;
+	unsigned int local_cseq;
+	str* record_route;
+	str* sockinfo_str;
+} subscriber_data_t;
+
+typedef struct _reg_subscriber {
+    char event;
+    time_t expires; /**< Time of expiration		 			*/
+    int version; /**< Last version sent to this subs.	*/
+
+    str watcher_uri;
+    str watcher_contact;
+    str presentity_uri;
+    
+    unsigned int local_cseq;
+    str call_id;
+    str from_tag;
+    str to_tag;
+    str record_route;
+    str sockinfo_str;
+
+    struct _reg_subscriber *next; /**< the next subscriber in the list		*/
+    struct _reg_subscriber *prev; /**< the previous subscriber in the list	*/
+} reg_subscriber;
+
+/*!
+ * \brief States for in-memory contacts in regards to contact storage handler (db, in-memory, ldap etc)
+ */
+typedef enum cstate {
+    CS_NEW, /*!< New contact - not flushed yet */
+    CS_SYNC, /*!< Synchronized contact with the database */
+    CS_DIRTY /*!< Update contact - not flushed yet */
+} cstate_t;
+
+/*! \brief Valid contact is a contact that either didn't expire yet or is permanent */
+#define VALID_CONTACT(c, t)   ((c->expires>t) || (c->expires==0))
+
+struct hslot;
+/*!< Hash table slot */
+struct socket_info;
+
+/** SPT for checking a SIP Header */
+typedef struct _ims_sip_header {
+    str header; /**< name of the header to match	*/
+    str content; /**< regex to match             	*/
+    short type; /**< if known header, precalculated	*/
+} ims_sip_header;
+
+/** SPT for checking a SDP line */
+typedef struct _ims_session_desc {
+    str line; /**< name of line from description */
+    str content; /**< regex to match                */
+} ims_session_desc;
+
+/** Service Point Trigger Structure */
+typedef struct _ims_spt {
+    char condition_negated; /**< if to negate entire condition	*/
+    int group; /**< group to which it belongs		*/
+    char type; /**< type of condition				*/
+
+    union {
+        str request_uri; /**< Request URI regex				*/
+        str method; /**< the SIP method should be this	*/
+        ims_sip_header sip_header; /**< match of a certain SIP header	*/
+        char session_case; /**< session direction and case		*/
+        ims_session_desc session_desc; /**< session description match 		*/
+    };
+    /**< union for SPT 					*/
+    char registration_type; /**< set of registration types		*/
+} ims_spt;
+
+/** Trigger Point Structure */
+
+typedef struct _ims_trigger_point {
+    char condition_type_cnf; /**< if it's CNF or DNF     		*/
+    ims_spt *spt; /**< service point triggers 1..n 		*/
+    unsigned short spt_cnt; /**< number of service point triggers 	*/
+} ims_trigger_point;
+
+/** Application Server Structure */
+typedef struct _ims_application_server {
+    str server_name; /**< SIP URL of the app server                      */
+    char default_handling; /**< enum SESSION_CONTINUED SESSION_TERMINATED 0..1 */
+    str service_info; /**< optional info to be sent to AS 0..1            */
+} ims_application_server;
+
+/** Public Identity Structure */
+typedef struct {
+    char barring; /**< Barring state									*/
+    str public_identity; /**< Public Identity string							*/
+    str wildcarded_psi; /** if exists is the wildcarded psi					*/
+} ims_public_identity;
+
+/** Initial Filter Criteria Structure */
+typedef struct _ims_filter_criteria {
+    int priority; /**< checking priority, lower means more important */
+    ims_trigger_point *trigger_point; /**< definition of trigger 0..1 */
+    ims_application_server application_server; /**< target of the trigger   */
+    char *profile_part_indicator; /**< profile part indicator 0..1 */
+} ims_filter_criteria;
+
+/** CoreNetwork Service Authorization */
+typedef struct _ims_cn_service_auth {
+    int subscribed_media_profile_id; /* must be >=0 */
+} ims_cn_service_auth;
+
+/** Service Profile Structure */
+typedef struct {
+    ims_public_identity *public_identities; /**< array of public identities		*/
+    unsigned short public_identities_cnt; /**< number of public identities	*/
+    ims_filter_criteria *filter_criteria; /**< vector of filter criteria 0..n */
+    unsigned short filter_criteria_cnt; /**< size of the vector above		*/
+    ims_cn_service_auth *cn_service_auth; /**< core net. services auth. 0..1	*/
+    int *shared_ifc_set; /**< shared ifc set ids 0..n 		*/
+    unsigned short shared_ifc_set_cnt; /**< size of above vector 			*/
+} ims_service_profile;
+
+/** User Subscription Structure */
+typedef struct ims_subscription_s {
+    str private_identity; /**< private identity 				*/
+    struct hslot_sp* slot; /*!< Collision slot in the hash table array we belong to */
+    unsigned int impu_hash; /**< hash over public_identity */
+    int wpsi; /** This is not in the standards
+	 	 	 	 	 	 	 	 	 	 	 	0 normal user or distinct psi inside
+	 	 	 	 	 	 	 	 	 	 	 	1 wildcarded psi
+	 	 	 	 	 	 	 	 	 	 	 **/
+    ims_service_profile *service_profiles; /**< array of service profiles		*/
+    unsigned short service_profiles_cnt; /**< size of the array above		*/
+
+    int ref_count; /**< referenced count 				*/
+    gen_lock_t *lock; /**< lock for operations on it 		*/
+    struct ims_subscription_s* next;
+    struct ims_subscription_s* prev;
+} ims_subscription;
+
+/** IPSec SA Information */
+typedef struct ipsec {
+    unsigned int spi_uc; /**< SPI Client to use					*/
+    unsigned int spi_us; /**< SPI Server to use					*/
+    unsigned int spi_pc; /**< SPI Client to use					*/
+    unsigned int spi_ps; /**< SPI Server to use					*/
+    unsigned short port_uc; /**< Port UE Client						*/
+    unsigned short port_us; /**< Port UE Server						*/
+
+    str ealg; /**< Cypher Algorithm - ESP				*/
+    str r_ealg; /**< received Cypher Algorithm - ESP	*/
+    str ck; /**< Cypher Key							*/
+    str alg; /**< Integrity Algorithm - AH			*/
+    str r_alg; /**<received Integrity Algorithm - AH	*/
+    str ik; /**< Integrity Key						*/
+    str prot; /**< Protocol (ah/esp) */
+    str mod; /**< Mode (transport/tunnel) */
+} ipsec_t;
+
+typedef enum sec_type {
+    SECURITY_NONE = 0,
+    SECURITY_IPSEC = 1,
+} security_type;
+
+typedef struct security {
+    str sec_header; /**< Security Header value 				*/
+    security_type type; /**< Type of security in use			*/
+
+    union {
+        ipsec_t *ipsec; /**< IPSec SA information, if any		*/
+    } data;
+    float q;
+} security_t;
+
+/*! \brief Main structure for handling of registered Contact data */
+typedef struct ucontact {
+    str* domain; /*!< Pointer to domain name (NULL terminated) */
+    str* aor; /*!< Pointer to the AOR string in record structure*/
+    str c; /*!< Contact address */
+    str received; /*!< IP+port+protocol we received the REGISTER from */
+    str path; /*!< Path header */
+    time_t expires; /*!< Expires parameter */
+    qvalue_t q; /*!< q parameter */
+    str callid; /*!< Call-ID header field of registration */
+    int cseq; /*!< CSeq value */
+    cstate_t state; /*!< State of the contact (\ref cstate) */
+    unsigned int flags; /*!< Various flags (NAT, ping type, etc) */
+    unsigned int cflags; /*!< Custom contact flags (from script) */
+    str user_agent; /*!< User-Agent header field */
+    struct socket_info *sock; /*!< received socket */
+    time_t last_modified; /*!< When the record was last modified */
+    unsigned int methods; /*!< Supported methods */
+
+    struct socket_info *si_ps;
+    struct socket_info *sipc;
+    security_t *security_temp; /**< Security-Client Information		*/
+    security_t *security; /**< Security-Client Information		*/
+
+    struct ulcb_head_list* cbs;	/**< individual callbacks per contact */
+
+    struct ucontact* next; /*!< Next contact in the linked list */
+    struct ucontact* prev; /*!< Previous contact in the linked list */
+} ucontact_t;
+
+/*! \brief Informations related to a contact (used mainly for passing data around */
+typedef struct ucontact_info {
+    str received; /*!< Received interface */
+    str* path; /*!< Path informations */
+    time_t expires; /*!< Contact expires */
+    qvalue_t q; /*!< Q-value */
+    str* callid; /*!< call-ID */
+    int cseq; /*!< CSEQ number */
+    unsigned int flags; /*!< message flags */
+    unsigned int cflags; /*!< contact flags */
+    str *user_agent; /*!< user agent header */
+    struct socket_info *sock; /*!< socket informations */
+
+    unsigned int methods; /*!< supported methods */
+    time_t last_modified; /*!< last modified */
+} ucontact_info_t;
+
+typedef struct udomain_head {
+    str* name;
+} udomain_head_t;
+
+/** Enumeration for public identity Registration States */
+enum pi_reg_states {
+    IMPU_NOT_REGISTERED = 0, 	/**< User not-registered, no profile stored	*/
+    IMPU_REGISTERED = 1, 		/**< User registered						*/
+    IMPU_UNREGISTERED = -1 		/**< User not-registered, profile stored	*/
+};
+
+static inline char* get_impu_regstate_as_string(enum pi_reg_states reg_state) {
+    switch (reg_state) {
+        case IMPU_NOT_REGISTERED:
+            return "not registered";
+        case IMPU_REGISTERED:
+            return "registered";
+        case IMPU_UNREGISTERED:
+            return "unregistered";
+        default:
+            return "unknown";
+    }
+}
+
+/*! \brief
+ * Basic hash table element
+ */
+typedef struct impurecord {
+    str* domain; 					/*!< Pointer to domain we belong to (null terminated string) */
+    int is_primary;					/*!< first IMPU (in implicit set this is the one that will trigger a SAR, if no implicit set - we should still be safe with first) */
+    str public_identity; 			/*!< Address of record */
+    unsigned int aorhash; 			/*!< Hash over address of record */
+    int barring;
+    enum pi_reg_states reg_state;
+    ims_subscription *s; 			/**< subscription to which it belongs 		*/
+    str ccf1, ccf2, ecf1, ecf2; 	/**< charging functions						*/
+    ucontact_t* contacts; 			/*!< One or more contact fields */
+    reg_subscriber *shead, *stail; 	/**< list of subscribers attached			*/
+    time_t expires; 				/*!< timer when this IMPU expires - currently only used for unreg IMPU */
+
+    struct hslot* slot; 			/*!< Collision slot in the hash table array we belong to */
+    struct ulcb_head_list* cbs;		/**< individual callbacks per impurecord */
+    struct impurecord* prev; 		/*!< Next item in the hash entry */
+    struct impurecord* next; 		/*!< Previous item in the hash entry */
+} impurecord_t;
+
+/** a parcel for transporting impurecord information */
+typedef struct impurecord_info {
+    int barring;
+    enum pi_reg_states reg_state;
+    ims_subscription *s;
+    str *ccf1, *ccf2, *ecf1, *ecf2;
+} impurecord_info_t;
+
+
+typedef int (*insert_impurecord_t)(struct udomain* _d, str* public_identity, int reg_state, int barring,
+        ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2,
+        struct impurecord** _r);
+
+typedef int (*get_impurecord_t)(struct udomain* _d, str* _aor, struct impurecord** _r);
+
+typedef int (*delete_impurecord_t)(struct udomain* _d, str* _aor, struct impurecord* _r);
+
+typedef int (*update_impurecord_t)(struct udomain* _d, str* public_identity, int reg_state, int barring, int is_primary, ims_subscription** s, str* ccf1, str* ccf2, str* ecf1, str* ecf2, struct impurecord** _r);
+
+typedef int (*update_ucontact_t)(struct impurecord* _r, struct ucontact* _c, struct ucontact_info* _ci);
+
+typedef int (*insert_ucontact_t)(struct impurecord* _r, str* _contact, struct ucontact_info* _ci, struct ucontact** _c);
+
+typedef int (*delete_ucontact_t)(struct impurecord* _r, struct ucontact* _c);
+
+typedef int (*get_ucontact_t)(struct impurecord* _r, str* _c, str* _callid, str* _path, int _cseq, struct ucontact** _co);
+
+typedef void (*lock_udomain_t)(struct udomain* _d, str *_aor);
+
+typedef void (*unlock_udomain_t)(struct udomain* _d, str *_aor);
+
+typedef int (*register_udomain_t)(const char* _n, struct udomain** _d);
+
+typedef int (*get_all_ucontacts_t)(void* buf, int len, unsigned int flags, unsigned int part_idx, unsigned int part_max);
+
+typedef int (*get_udomain_t)(const char* _n, udomain_t** _d);
+
+//typedef int (*update_subscriber_t)(udomain_t* _d, int event,int* expires, str *callid, str *ftag, str *ttag, unsigned int local_cseq, str *watcher_uri, str *watcher_contact, str *presentity_uri, str *record_route, str *sockinfo_str, reg_subscriber** reg_subscriber );
+
+typedef int (*update_subscriber_t)(impurecord_t* urec,
+        str *watcher_uri, str *watcher_contact,
+        int *expires, reg_subscriber** _reg_subscriber);
+
+typedef void (*external_delete_subscriber_t)(reg_subscriber *s, udomain_t* _t);
+
+//typedef int (*get_subscriber_t)(udomain_t* _d, impurecord_t* urec, str *watcher_contact, str *presentity_uri, int event, reg_subscriber** reg_subscriber);
+typedef int (*get_subscriber_t)(impurecord_t* urec, str *watcher_contact, str *presentity_uri, int event, reg_subscriber** reg_subscriber);
+
+//typedef int (*add_subscriber_t)(udomain_t* _d, impurecord_t* urec,
+//		str *watcher_uri, str *watcher_contact,
+//		subscriber_data_t* subscriber_data, reg_subscriber** _reg_subscriber);
+
+typedef int (*add_subscriber_t)(impurecord_t* urec,
+		str *watcher_uri, str *watcher_contact,
+		subscriber_data_t* subscriber_data, reg_subscriber** _reg_subscriber);
+
+typedef int (*get_impus_from_subscription_as_string_t)(udomain_t* _d, impurecord_t* impu_rec, int barring, str** impus, int* num_impus);
+
+/*! usrloc API export structure */
+typedef struct usrloc_api {
+    int use_domain; /*! use_domain module parameter */
+    int db_mode; /*! db_mode module parameter */
+    unsigned int nat_flag; /*! nat_flag module parameter */
+
+    register_udomain_t register_udomain;
+    get_udomain_t get_udomain;
+    lock_udomain_t lock_udomain;
+    unlock_udomain_t unlock_udomain;
+
+    insert_impurecord_t insert_impurecord;
+    delete_impurecord_t delete_impurecord;
+    get_impurecord_t get_impurecord;
+    update_impurecord_t update_impurecord;
+
+    insert_ucontact_t insert_ucontact;
+    delete_ucontact_t delete_ucontact;
+    get_ucontact_t get_ucontact;
+    get_all_ucontacts_t get_all_ucontacts;
+    update_ucontact_t update_ucontact;
+    //update_user_profile_t update_user_profile;
+
+    add_subscriber_t add_subscriber;
+    update_subscriber_t update_subscriber;
+    external_delete_subscriber_t external_delete_subscriber;
+    get_subscriber_t get_subscriber;
+
+    get_impus_from_subscription_as_string_t get_impus_from_subscription_as_string;
+
+    register_ulcb_t register_ulcb;
+} usrloc_api_t;
+
+/*! usrloc API export bind function */
+typedef int (*bind_usrloc_t)(usrloc_api_t* api);
+
+#endif

+ 56 - 0
modules/usrloc_scscf/utime.c

@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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
+ * 
+ */
+
+#include "utime.h"
+
+
+time_t act_time;
+
+
+void get_act_time(void)
+{
+
+	act_time = time(0);
+}

+ 61 - 0
modules/usrloc_scscf/utime.h

@@ -0,0 +1,61 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * Copyright (C) 2012 Smile Communications, [email protected]
+ * 
+ * The initial version of this code was written by Dragos Vingarzan
+ * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
+ * Fruanhofer Institute. It was and still is maintained in a separate
+ * branch of the original SER. We are therefore migrating it to
+ * Kamailio/SR and look forward to maintaining it from here on out.
+ * 2011/2012 Smile Communications, Pty. Ltd.
+ * ported/maintained/improved by 
+ * Jason Penton (jason(dot)penton(at)smilecoms.com and
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * effort to add full IMS support to Kamailio/SR using a new and
+ * improved architecture
+ * 
+ * NB: Alot of this code was originally part of OpenIMSCore,
+ * FhG Fokus. 
+ * Copyright (C) 2004-2006 FhG Fokus
+ * Thanks for great work! This is an effort to 
+ * break apart the various CSCF functions into logically separate
+ * components. We hope this will drive wider use. We also feel
+ * that in this way the architecture is more complete and thereby easier
+ * to manage in the Kamailio/SR environment
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * Kamailio 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
+ *
+ * Kamailio 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 UTIME_H
+#define UTIME_H
+
+#include <time.h>
+
+
+extern time_t act_time;
+
+
+/*! \brief
+ * Get actual time
+ */
+void get_act_time(void);
+
+
+#endif /* UTIME_H */