[Spread-cvs] commit: r593 - in branches/experimental-4.3-threaded: daemon libspread-util/include libspread-util/src

jschultz at spread.org jschultz at spread.org
Thu Sep 26 16:30:23 EDT 2013


Author: jschultz
Date: 2013-09-26 16:30:23 -0400 (Thu, 26 Sep 2013)
New Revision: 593

Modified:
   branches/experimental-4.3-threaded/daemon/protocol.h
   branches/experimental-4.3-threaded/daemon/session.c
   branches/experimental-4.3-threaded/daemon/session.h
   branches/experimental-4.3-threaded/libspread-util/include/spu_events.h
   branches/experimental-4.3-threaded/libspread-util/include/spu_objects.h
   branches/experimental-4.3-threaded/libspread-util/include/spu_objects_local.h
   branches/experimental-4.3-threaded/libspread-util/src/events.c
Log:
Changed events code to expose global event loop and allow for a single threaded version of Spread to use that for both session and protocol code.
Change session queue to contain a typed object that is then processed in Sess_process_message (might want to change name).
Make copies of reg and trans memberships and pass them onto the session queue.
Added new memory types for OBJ_LINK and MEMB_OBJ.
Made protocol.h and session.h not circularly refer to one another.


Modified: branches/experimental-4.3-threaded/daemon/protocol.h
===================================================================
--- branches/experimental-4.3-threaded/daemon/protocol.h	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/daemon/protocol.h	2013-09-26 20:30:23 UTC (rev 593)
@@ -38,14 +38,19 @@
 
 #include "arch.h"
 #include "scatter.h"
-#include "session.h"
+#include "prot_objs.h"
+#include "configuration.h"
 
+struct session;
+
 typedef struct  dummy_down_link {
 	int32			type;
 	scatter 		*mess; 
 	struct	dummy_down_link *next;
 } down_link;
 
+typedef down_link obj_link;
+
 typedef struct  dummy_down_queue {
 	int		num_mess;
 	int		cur_element;
@@ -60,8 +65,8 @@
 void	Prot_set_down_queue( int queue_type );
 void	Prot_new_message( down_link *down_ptr, int not_used_in_spread3_p );
 void    Prot_init_down_queues(void);
-void    Prot_Create_Local_Session(session *new_sess);
-void    Prot_Destroy_Local_Session(session *old_sess);
+void    Prot_Create_Local_Session(struct session *new_sess);
+void    Prot_Destroy_Local_Session(struct session *old_sess);
 down_link       *Prot_Create_Down_Link(message_obj *msg, int type, int mbox, int cur_element);
 void    Prot_kill_session(message_obj *msg);
 void	Prot_set_prev_proc(configuration *memb);

Modified: branches/experimental-4.3-threaded/daemon/session.c
===================================================================
--- branches/experimental-4.3-threaded/daemon/session.c	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/daemon/session.c	2013-09-26 20:30:23 UTC (rev 593)
@@ -89,6 +89,13 @@
 
 #include "stdutil/stderror.h"
 
+typedef struct
+{
+  configuration memb;
+  membership_id memb_id;
+
+} memb_obj;
+
 static	sp_time		Badger_timeout = { 0, 100000 };
 
 static	message_obj	New_mess;
@@ -109,12 +116,16 @@
 #include "signal_queues.h"
 
 static signal_q     Daemon_Sess_Q;
-static E_events     Session_Events;
+static E_events    *Session_Events = NULL;
+
+#ifdef _REENTRANT
+static E_events     Session_Events_Impl;
 static stdthread    Session_Thread;
 static stdthread_id Session_Thread_ID;
+#endif
 
 static  void    Sess_process_daemon_q(int dmy_fd, int dmy_code, void *dmy_ptr);
-static  void    Sess_process_message(message_link *mess_link);
+static  void    Sess_process_message(obj_link *mess_link);
 static	void	Sess_attach_accept(void);
 static	void	Sess_detach_accept(void);
 static  void    Sess_recv_client_auth(mailbox mbox, int dummy, void *dummy_p);
@@ -132,20 +143,24 @@
 static  void    Sess_create_reject_message ( message_obj *msg );
 static  int     Sess_get_p2p_dests( int num_groups, char groups[][MAX_GROUP_NAME], char dests[][MAX_GROUP_NAME] );
 
+#ifdef _REENTRANT
 static void * STDTHREAD_FCN Sess_run(void *arg)
 {
   E_events_handle_events(&Session_Events);
 
   return NULL;
 }
+#endif
 
 void Sess_spawn(void)
 {
+#ifdef _REENTRANT
   stdcode code;
 
   if ((code = stdthread_spawn(&Session_Thread, &Session_Thread_ID, Sess_run, NULL))) {
     Alarm(EXIT, "Sess_spawn: spawning session thread failed; code = %d; error = '%s'\n", code, stderr_strerr(code));
   }
+#endif
 }
 
 static  void    Sess_activate_port_reuse(mailbox mbox)
@@ -361,14 +376,27 @@
         }
 
         ret = Mem_init_object( DOWN_LINK, "down_link", sizeof(down_link), 200, 0);
+	/*ret = Mem_init_object( OBJ_LINK, "obj_link", sizeof(obj_link), 200, 0); NOTE: OBJ_LINK is a DOWN_LINK */ 
         if (ret < 0)
         {
                 Alarm(EXIT, "Sess_init: Failure to Initialize DOWN_LINK memory objects\n");
         }
 
-	if (E_events_init(&Session_Events)) {
+	ret = Mem_init_object( MEMB_OBJ, "memb_obj", sizeof(memb_obj), 200, 0);
+        if (ret < 0)
+        {
+                Alarm(EXIT, "Sess_init: Failure to Initialize MEMB_OBJ memory objects\n");
+        }
+
+#ifndef _REENTRANT
+	Session_Events = &G_Events;
+#else
+	Session_Events = &Session_Events_Impl;
+
+	if (E_events_init(Session_Events)) {
 	        Alarm(EXIT, "Sess_init: E_events_init failure!\n");
 	}
+#endif
 
 	Sess_init_sessions ();
 	
@@ -469,7 +497,7 @@
 
         Signal_Q_init(&Daemon_Sess_Q, sizeof(message_link*)); /* ### Testing queues */
 
-	E_events_attach_fd( &Session_Events, Daemon_Sess_Q.q_pipe[0], READ_FD, Sess_process_daemon_q, 0, 0, HIGH_PRIORITY );
+	E_events_attach_fd( Session_Events, Daemon_Sess_Q.q_pipe[0], READ_FD, Sess_process_daemon_q, 0, 0, HIGH_PRIORITY );
 
         Alarm( SESSION, "Sess_init: ended ok\n" );
 }
@@ -529,12 +557,12 @@
         int i;
         for ( i=0; i < Accept_inet_mbox_num; i++)
         {
-	        E_events_attach_fd( &Session_Events, Accept_inet_mbox[i], READ_FD, Sess_accept, AF_INET, NULL, LOW_PRIORITY );
-                E_events_attach_fd( &Session_Events, Accept_inet_mbox[i], EXCEPT_FD, Sess_accept, AF_INET, NULL, LOW_PRIORITY );
+	        E_events_attach_fd( Session_Events, Accept_inet_mbox[i], READ_FD, Sess_accept, AF_INET, NULL, LOW_PRIORITY );
+                E_events_attach_fd( Session_Events, Accept_inet_mbox[i], EXCEPT_FD, Sess_accept, AF_INET, NULL, LOW_PRIORITY );
         }
 #ifndef ARCH_PC_WIN95
 
-	E_events_attach_fd( &Session_Events, Accept_unix_mbox, READ_FD, Sess_accept, AF_UNIX, NULL, LOW_PRIORITY );
+	E_events_attach_fd( Session_Events, Accept_unix_mbox, READ_FD, Sess_accept, AF_UNIX, NULL, LOW_PRIORITY );
 
 #endif	/* ARCH_PC_WIN95 */
 
@@ -545,12 +573,12 @@
         int i;
         for (i=0; i < Accept_inet_mbox_num; i++)
         {
-	        E_events_detach_fd( &Session_Events, Accept_inet_mbox[i], READ_FD );
-                E_events_detach_fd( &Session_Events, Accept_inet_mbox[i], EXCEPT_FD );
+	        E_events_detach_fd( Session_Events, Accept_inet_mbox[i], READ_FD );
+                E_events_detach_fd( Session_Events, Accept_inet_mbox[i], EXCEPT_FD );
         }
 #ifndef ARCH_PC_WIN95
 
-	E_events_detach_fd( &Session_Events, Accept_unix_mbox, READ_FD );
+	E_events_detach_fd( Session_Events, Accept_unix_mbox, READ_FD );
 
 #endif	/* ARCH_PC_WIN95 */
 
@@ -653,11 +681,11 @@
         }
 	/* delaying for the private name to be written */
 	Sess_detach_accept();
-	E_events_attach_fd( &Session_Events, Sessions[MAX_SESSIONS].mbox, READ_FD, Sess_accept_continue, 0, NULL, LOW_PRIORITY );	
-	E_events_attach_fd( &Session_Events, Sessions[MAX_SESSIONS].mbox, EXCEPT_FD, Sess_accept_continue, 0, NULL, LOW_PRIORITY );	
+	E_events_attach_fd( Session_Events, Sessions[MAX_SESSIONS].mbox, READ_FD, Sess_accept_continue, 0, NULL, LOW_PRIORITY );	
+	E_events_attach_fd( Session_Events, Sessions[MAX_SESSIONS].mbox, EXCEPT_FD, Sess_accept_continue, 0, NULL, LOW_PRIORITY );	
 	accept_delay.sec = 1;
 	accept_delay.usec= 0;
-	E_events_queue( &Session_Events, Sess_accept_continue2, 1, NULL, accept_delay, LOW_PRIORITY);
+	E_events_queue( Session_Events, Sess_accept_continue2, 1, NULL, accept_delay, LOW_PRIORITY);
 }
 
 void	Sess_accept_continue(mailbox d1, int d2, void *d3)
@@ -675,9 +703,9 @@
         unsigned char           list_len;
 	session			*tmp_ses;
  
-	E_events_dequeue( &Session_Events, Sess_accept_continue2, 1, NULL );
-	E_events_detach_fd( &Session_Events, Sessions[MAX_SESSIONS].mbox, READ_FD );
-	E_events_detach_fd( &Session_Events, Sessions[MAX_SESSIONS].mbox, EXCEPT_FD );
+	E_events_dequeue( Session_Events, Sess_accept_continue2, 1, NULL );
+	E_events_detach_fd( Session_Events, Sessions[MAX_SESSIONS].mbox, READ_FD );
+	E_events_detach_fd( Session_Events, Sessions[MAX_SESSIONS].mbox, EXCEPT_FD );
 	Sess_attach_accept();
 
 	/* set file descriptor to non blocking */
@@ -901,8 +929,8 @@
         }
 
         /* Now wait for client reply */
-	E_events_attach_fd( &Session_Events, Sessions[sess_location].mbox, READ_FD, Sess_recv_client_auth, 0, NULL, LOW_PRIORITY );
-	E_events_attach_fd( &Session_Events, Sessions[sess_location].mbox, EXCEPT_FD, Sess_recv_client_auth, 0, NULL, LOW_PRIORITY );
+	E_events_attach_fd( Session_Events, Sessions[sess_location].mbox, READ_FD, Sess_recv_client_auth, 0, NULL, LOW_PRIORITY );
+	E_events_attach_fd( Session_Events, Sessions[sess_location].mbox, EXCEPT_FD, Sess_recv_client_auth, 0, NULL, LOW_PRIORITY );
 }
 
 static void    Sess_recv_client_auth(mailbox mbox, int dummy, void *dummy_p)
@@ -922,8 +950,8 @@
                 Alarm( EXIT, "Sess_recv_client_auth: BUG! Session is already authorized (status 0x%x)\n", Sessions[ses].status);
         }
     
-        E_events_detach_fd(&Session_Events, mbox, READ_FD);
-        E_events_detach_fd(&Session_Events, mbox, EXCEPT_FD);
+        E_events_detach_fd(Session_Events, mbox, READ_FD);
+        E_events_detach_fd(Session_Events, mbox, EXCEPT_FD);
 
 	/* set file descriptor to non blocking */
 	ioctl_cmd = 1;
@@ -1104,9 +1132,9 @@
         /* sending the private group name */
         send( Sessions[ses].mbox, private_group_name, name_len, 0 );
 
-        E_events_attach_fd( &Session_Events, Sessions[ses].mbox, READ_FD, Sess_read, Sessions[ses].type, NULL, 
+        E_events_attach_fd( Session_Events, Sessions[ses].mbox, READ_FD, Sess_read, Sessions[ses].type, NULL, 
                      LOW_PRIORITY );
-        E_events_attach_fd( &Session_Events, Sessions[ses].mbox, EXCEPT_FD, Sess_read, Sessions[ses].type, NULL, 
+        E_events_attach_fd( Session_Events, Sessions[ses].mbox, EXCEPT_FD, Sess_read, Sessions[ses].type, NULL, 
                      LOW_PRIORITY );
 
         Sessions[ses].status = Set_op_session( Sessions[ses].status );
@@ -1498,10 +1526,10 @@
                 }
 
                 /* close the mailbox and mark it unoperational */
-                E_events_dequeue( &Session_Events, Sess_badger_TO, mbox, NULL );
-                E_events_detach_fd( &Session_Events, mbox, READ_FD );
-                E_events_detach_fd( &Session_Events, mbox, EXCEPT_FD );
-		E_events_detach_fd( &Session_Events, mbox, WRITE_FD );
+                E_events_dequeue( Session_Events, Sess_badger_TO, mbox, NULL );
+                E_events_detach_fd( Session_Events, mbox, READ_FD );
+                E_events_detach_fd( Session_Events, mbox, EXCEPT_FD );
+		E_events_detach_fd( Session_Events, mbox, WRITE_FD );
                 close( mbox );
                 /* the mailbox is closed but the entry still points to it */
                 Sessions[ses].status = Clear_op_session( Sessions[ses].status );
@@ -1699,8 +1727,8 @@
                         Message_calculate_current_location(tmp_link->mess, len_sent, &(Sessions[ses].write) );
 
 			/* We will need to badger this guy */
-			E_events_queue( &Session_Events, Sess_badger_TO, Sessions[ses].mbox, NULL, Badger_timeout, LOW_PRIORITY );
-			E_events_attach_fd( &Session_Events, Sessions[ses].mbox, WRITE_FD, Sess_badger_FD, 0, NULL, LOW_PRIORITY );
+			E_events_queue( Session_Events, Sess_badger_TO, Sessions[ses].mbox, NULL, Badger_timeout, LOW_PRIORITY );
+			E_events_attach_fd( Session_Events, Sessions[ses].mbox, WRITE_FD, Sess_badger_FD, 0, NULL, LOW_PRIORITY );
 		}else{
 			/* This guy was already badgered */
 			Sessions[ses].last->next = tmp_link;
@@ -1793,13 +1821,13 @@
 	ret = ioctl( mbox, FIONBIO, &ioctl_cmd);
 
 	if( Sessions[ses].num_mess > 0 ) {
-	  E_events_queue( &Session_Events, Sess_badger_TO, mbox, NULL, Badger_timeout, LOW_PRIORITY);
-	  E_events_attach_fd( &Session_Events, mbox, WRITE_FD, Sess_badger_FD, 0, NULL, LOW_PRIORITY );
+	  E_events_queue( Session_Events, Sess_badger_TO, mbox, NULL, Badger_timeout, LOW_PRIORITY);
+	  E_events_attach_fd( Session_Events, mbox, WRITE_FD, Sess_badger_FD, 0, NULL, LOW_PRIORITY );
 
 	}else{
 	NO_WORK:
-	  E_events_dequeue( &Session_Events, Sess_badger_TO, mbox, NULL );
-	  E_events_detach_fd( &Session_Events, mbox, WRITE_FD );
+	  E_events_dequeue( Session_Events, Sess_badger_TO, mbox, NULL );
+	  E_events_detach_fd( Session_Events, mbox, WRITE_FD );
 	}
 }
 
@@ -1872,10 +1900,10 @@
         Sessions[ses].read_mess = NULL;
 
 	/* close the mailbox and mark it unoperational */
-	E_events_dequeue( &Session_Events, Sess_badger_TO, mbox, NULL );
-	E_events_detach_fd( &Session_Events, mbox, READ_FD );
-	E_events_detach_fd( &Session_Events, mbox, EXCEPT_FD );
-	E_events_detach_fd( &Session_Events, mbox, WRITE_FD );
+	E_events_dequeue( Session_Events, Sess_badger_TO, mbox, NULL );
+	E_events_detach_fd( Session_Events, mbox, READ_FD );
+	E_events_detach_fd( Session_Events, mbox, EXCEPT_FD );
+	E_events_detach_fd( Session_Events, mbox, WRITE_FD );
         close(mbox);
 	/* the mailbox is closed but the entry still points to it */
 	Sessions[ses].status = Clear_op_session( Sessions[ses].status );
@@ -1884,12 +1912,23 @@
 
 void	Sess_deliver_message( message_link *mess_link )  /* typically, but not always, called by protocol thread */
 {
-        Signal_Q_enqueue(&Daemon_Sess_Q, &mess_link);
+        obj_link *obj = new(OBJ_LINK);
+
+	if (obj == NULL) {
+	  Alarm(EXIT, "Sess_deliver_message: failure to create obj_link\n");
+	}
+
+	obj->type = REGULAR_MESS;
+	obj->mess = (message_obj*) mess_link;
+	obj->next = NULL;
+
+        Signal_Q_enqueue(&Daemon_Sess_Q, &obj);
 }
 
 static void Sess_process_daemon_q(int fd, int dmy_code, void *dmy_ptr)
 {
   Signal_Q_process(&Daemon_Sess_Q, (void(*)(void*)) Sess_process_message);
+
 #if 0
         stdit it;
         char buf;
@@ -1917,9 +1956,10 @@
 #endif
 }
 
-static void Sess_process_message( message_link *mess_link )
+static void Sess_process_message( obj_link *obj_link )
 {
 static	int		target_sessions[MAX_SESSIONS];
+        message_link   *mess_link = (message_link*) obj_link->mess;
 	int		num_target_sessions;
 	int		source_ses;
 	message_header	*head_ptr;
@@ -1931,6 +1971,24 @@
 	int		needed;
 	int		i;
 
+	if (obj_link->type == REG_MEMB_MESS) {
+	  memb_obj *m = (memb_obj*) obj_link->mess;
+
+	  G_handle_reg_memb( m->memb, m->memb_id );
+	  dispose(m->memb.allprocs);
+	  goto END;
+	}
+
+	if (obj_link->type == TRANSITION_MESS) {
+	  memb_obj *t = (memb_obj*) obj_link->mess;
+
+	  G_handle_trans_memb( t->memb, t->memb_id );
+	  dispose(t->memb.allprocs);
+	  goto END;
+	}
+
+	assert(obj_link->type == REGULAR_MESS);
+
 	msg = mess_link->mess;
         Obj_Inc_Refcount(msg);
 	head_ptr = Message_get_message_header(msg);
@@ -1941,28 +1999,28 @@
 	{
 		Sess_handle_join( mess_link );
                 Message_Dec_Refcount(msg);
-		return;
+		goto END;
 	}
 	
 	if( Is_leave_mess( head_ptr->type ) )
 	{
 		Sess_handle_leave( mess_link );
                 Message_Dec_Refcount(msg);
-		return;
+		goto END;
 	}
 
 	if( Is_kill_mess( head_ptr->type ) )
 	{
 		Sess_handle_kill( mess_link );
                 Message_Dec_Refcount(msg);
-		return;
+		goto END;
 	}
 	
 	if( Is_groups_mess( head_ptr->type ) )
 	{
 		G_handle_groups( mess_link );
                 Message_Dec_Refcount(msg);
-		return;
+		goto END;
 	}
 
 	/* regular message */
@@ -2002,21 +2060,59 @@
 
         Message_Dec_Refcount(msg);
 	if( !needed ) Sess_dispose_message( mess_link );
+
+ END:
+	dispose(obj_link);
 }
 
-/* ### Sess_deliver_reg_memb and Sess_deliver_trans_memb may need to be changed to
- * enqueue messages */
+void	Sess_deliver_reg_memb( configuration reg_memb, membership_id reg_memb_id )
+{
+        obj_link *obj = new(OBJ_LINK);
+	memb_obj *m   = new(MEMB_OBJ);
 
-/* TODO: FIX ME*/
+	if (obj == NULL || m == NULL) {
+	  Alarm(EXIT, "Sess_deliver_reg_memb: failed to create object!\n");
+	}
 
-void	Sess_deliver_reg_memb( configuration reg_memb, membership_id reg_memb_id )
-{
-	G_handle_reg_memb( reg_memb, reg_memb_id );
+	m->memb.allprocs = Mem_alloc( MAX_PROCS_RING * sizeof( proc ) );
+
+	if (m->memb.allprocs == NULL) {
+	  Alarm(EXIT, "Sess_deliver_reg_memb: failed to create allprocs!\n");
+	}
+
+	Conf_config_copy(&reg_memb, &m->memb);
+	m->memb_id = reg_memb_id;
+
+	obj->type = REG_MEMB_MESS;
+	obj->mess = (message_obj*) m;
+	obj->next = NULL;
+
+        Signal_Q_enqueue(&Daemon_Sess_Q, &obj);
 }
 
 void	Sess_deliver_trans_memb( configuration trans_memb, membership_id trans_memb_id )
 {
-	G_handle_trans_memb( trans_memb, trans_memb_id );
+        obj_link *obj = new(OBJ_LINK);
+	memb_obj *t   = new(MEMB_OBJ);
+
+	if (obj == NULL || t == NULL) {
+	  Alarm(EXIT, "Sess_deliver_trans_memb: failed to create object!\n");
+	}
+
+	t->memb.allprocs = Mem_alloc( MAX_PROCS_RING * sizeof( proc ) );
+
+	if (t->memb.allprocs == NULL) {
+	  Alarm(EXIT, "Sess_deliver_trans_memb: failed to create allprocs!\n");
+	}
+
+	Conf_config_copy(&trans_memb, &t->memb);
+	t->memb_id = trans_memb_id;
+
+	obj->type = TRANSITION_MESS;
+	obj->mess = (message_obj*) t;
+	obj->next = NULL;
+
+        Signal_Q_enqueue(&Daemon_Sess_Q, &obj);
 }
 
 static	void	Sess_handle_join( message_link *mess_link )

Modified: branches/experimental-4.3-threaded/daemon/session.h
===================================================================
--- branches/experimental-4.3-threaded/daemon/session.h	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/daemon/session.h	2013-09-26 20:30:23 UTC (rev 593)
@@ -42,6 +42,7 @@
 #include "prot_objs.h"
 #include "sess_types.h"
 #include "acm.h"
+#include "protocol.h"
 
 typedef	struct	dummy_message_link {
 	message_obj			*mess;
@@ -55,7 +56,7 @@
         int     total_bytes;
 };
 
-typedef	struct	dummy_session {
+typedef	struct	session {
 	char		name[MAX_PRIVATE_NAME+1]; /* +1 for the null */
         char            lib_version[3];
 	int32		address;
@@ -71,9 +72,9 @@
         struct partial_message_info     write;  /* Write Queue to Client */
 	message_link	*first;                 /* Write Queue to Client */
 	message_link	*last;                  /* Write Queue to Client */
-	struct dummy_session *sort_prev;
-	struct dummy_session *sort_next;
-	struct dummy_session *hash_next;
+	struct session  *sort_prev;
+	struct session  *sort_next;
+	struct session  *hash_next;
 } session;
 
 void	Sess_init(void);

Modified: branches/experimental-4.3-threaded/libspread-util/include/spu_events.h
===================================================================
--- branches/experimental-4.3-threaded/libspread-util/include/spu_events.h	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/libspread-util/include/spu_events.h	2013-09-26 20:30:23 UTC (rev 593)
@@ -168,6 +168,8 @@
 /***************************************************************************************************************************
  ***************************************************************************************************************************/
 
+extern E_events G_Events;
+
 int  E_events_init(E_events *e);
 void E_events_fini(E_events *e);
 

Modified: branches/experimental-4.3-threaded/libspread-util/include/spu_objects.h
===================================================================
--- branches/experimental-4.3-threaded/libspread-util/include/spu_objects.h	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/libspread-util/include/spu_objects.h	2013-09-26 20:30:23 UTC (rev 593)
@@ -43,7 +43,7 @@
 #define OBJECTS_H
 
 #define MAX_OBJECTS             200
-#define MAX_OBJ_USED            56
+#define MAX_OBJ_USED            57
 
 /* Object types 
  *

Modified: branches/experimental-4.3-threaded/libspread-util/include/spu_objects_local.h
===================================================================
--- branches/experimental-4.3-threaded/libspread-util/include/spu_objects_local.h	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/libspread-util/include/spu_objects_local.h	2013-09-26 20:30:23 UTC (rev 593)
@@ -108,6 +108,8 @@
 #define GROUPS_MESSAGE_LINK     53
 #define DAEMON_MEMBERS          54
 
+#define OBJ_LINK                DOWN_LINK
+#define MEMB_OBJ                55
 
 /* Highest valid object number is defined in objects.h as UNKNOWN_OBJ */
 

Modified: branches/experimental-4.3-threaded/libspread-util/src/events.c
===================================================================
--- branches/experimental-4.3-threaded/libspread-util/src/events.c	2013-09-23 18:39:16 UTC (rev 592)
+++ branches/experimental-4.3-threaded/libspread-util/src/events.c	2013-09-26 20:30:23 UTC (rev 593)
@@ -168,7 +168,7 @@
 /***************************************************************************************************************************
  ***************************************************************************************************************************/
 
-static E_events Events;  /* implicit event system for public E_* calls */
+E_events G_Events;  /* implicit event system for public E_* calls */
 
 /***************************************************************************************************************************
  ***************************************************************************************************************************/
@@ -1718,7 +1718,7 @@
 
 sp_time E_get_time(void)
 {
-  return E_events_get_time(&Events);
+  return E_events_get_time(&G_Events);
 }
 
 /***************************************************************************************************************************
@@ -1823,7 +1823,7 @@
 
 int E_init(void)
 {
-  return E_events_init(&Events);
+  return E_events_init(&G_Events);
 }
 
 /***************************************************************************************************************************
@@ -1831,7 +1831,7 @@
 
 void E_fini(void)
 {
-  E_events_fini(&Events);
+  E_events_fini(&G_Events);
 }
 
 /***************************************************************************************************************************
@@ -1839,7 +1839,7 @@
 
 int E_in_queue(E_time_callback_fcn fcn, int code, void *data)
 {
-  return E_events_in_queue(&Events, fcn, code, data);
+  return E_events_in_queue(&G_Events, fcn, code, data);
 }
 
 /***************************************************************************************************************************
@@ -1847,7 +1847,7 @@
 
 int E_queue(E_time_callback_fcn fcn, int code, void *data, sp_time delta_time)
 {
-  return E_events_queue(&Events, fcn, code, data, delta_time, LOW_PRIORITY);
+  return E_events_queue(&G_Events, fcn, code, data, delta_time, LOW_PRIORITY);
 }
 
 /***************************************************************************************************************************
@@ -1855,7 +1855,7 @@
 
 int E_queue_absolute(E_time_callback_fcn fcn, int code, void *data, sp_time absolute_time)
 {
-  return E_events_queue_absolute(&Events, fcn, code, data, absolute_time, LOW_PRIORITY);
+  return E_events_queue_absolute(&G_Events, fcn, code, data, absolute_time, LOW_PRIORITY);
 }
 
 /***************************************************************************************************************************
@@ -1863,7 +1863,7 @@
 
 int E_queue_periodic(E_time_callback_fcn fcn, int code, void *data, sp_time periodic_time)
 {
-  return E_events_queue_periodic(&Events, fcn, code, data, periodic_time, LOW_PRIORITY);
+  return E_events_queue_periodic(&G_Events, fcn, code, data, periodic_time, LOW_PRIORITY);
 }
 
 /***************************************************************************************************************************
@@ -1871,7 +1871,7 @@
 
 int E_dequeue(E_time_callback_fcn fcn, int code, void *data)
 {
-  return E_events_dequeue(&Events, fcn, code, data);
+  return E_events_dequeue(&G_Events, fcn, code, data);
 }
 
 /***************************************************************************************************************************
@@ -1879,7 +1879,7 @@
 
 int E_attach_fd(int fd, E_watch_type fd_type, E_fd_callback_fcn fcn, int code, void *data, E_priority priority)
 {
-  return E_events_attach_fd(&Events, fd, fd_type, fcn, code, data, priority);
+  return E_events_attach_fd(&G_Events, fd, fd_type, fcn, code, data, priority);
 }
 
 /***************************************************************************************************************************
@@ -1887,7 +1887,7 @@
 
 int E_detach_fd(int fd, E_watch_type fd_type)
 {
-  return E_events_detach_fd(&Events, fd, fd_type);
+  return E_events_detach_fd(&G_Events, fd, fd_type);
 }
 
 /***************************************************************************************************************************
@@ -1895,7 +1895,7 @@
 
 int E_detach_fd_priority(int fd, E_watch_type fd_type, int priority)
 {
-  return E_events_detach_fd(&Events, fd, fd_type);
+  return E_events_detach_fd(&G_Events, fd, fd_type);
 }
 
 /***************************************************************************************************************************
@@ -1903,7 +1903,7 @@
 
 int E_set_active_threshold(E_priority priority)
 {
-  return E_events_set_active_threshold(&Events, priority);
+  return E_events_set_active_threshold(&G_Events, priority);
 }
 
 /***************************************************************************************************************************
@@ -1911,7 +1911,7 @@
 
 int E_num_active(E_priority priority)
 {
-  return E_events_num_active(&Events, priority);
+  return E_events_num_active(&G_Events, priority);
 }
 
 /***************************************************************************************************************************
@@ -1919,7 +1919,7 @@
 
 int E_activate_fd(int fd, E_watch_type fd_type)
 {
-  return E_events_activate_fd(&Events, fd, fd_type);
+  return E_events_activate_fd(&G_Events, fd, fd_type);
 }
 
 /***************************************************************************************************************************
@@ -1927,7 +1927,7 @@
 
 int E_deactivate_fd(int fd, E_watch_type fd_type)
 {
-  return E_events_deactivate_fd(&Events, fd, fd_type);
+  return E_events_deactivate_fd(&G_Events, fd, fd_type);
 }
 
 /***************************************************************************************************************************
@@ -1935,7 +1935,7 @@
 
 int E_set_elevate_count(E_priority priority, unsigned count)
 {
-  return E_events_set_elevate_count(&Events, priority, count);
+  return E_events_set_elevate_count(&G_Events, priority, count);
 }
 
 /***************************************************************************************************************************
@@ -1943,7 +1943,7 @@
 
 int E_get_elevate_count(E_priority priority, unsigned *count)
 {
-  return E_events_get_elevate_count(&Events, priority, count);
+  return E_events_get_elevate_count(&G_Events, priority, count);
 }
 
 /***************************************************************************************************************************
@@ -1951,7 +1951,7 @@
 
 int E_handle_events(void)
 {
-  return E_events_handle_events(&Events);
+  return E_events_handle_events(&G_Events);
 }
 
 /***************************************************************************************************************************
@@ -1959,7 +1959,7 @@
 
 void E_exit_events(void)
 {
-  E_events_exit_events(&Events);
+  E_events_exit_events(&G_Events);
 }
 
 /***************************************************************************************************************************




More information about the Spread-cvs mailing list