# Some debugging for the TLS support.
# 
# Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Index: linux-2.6.16/arch/um/kernel/skas/process_kern.c
===================================================================
--- linux-2.6.16.orig/arch/um/kernel/skas/process_kern.c	2006-03-23 20:31:23.000000000 -0500
+++ linux-2.6.16/arch/um/kernel/skas/process_kern.c	2006-03-23 20:31:45.000000000 -0500
@@ -80,6 +80,11 @@ void release_thread_skas(struct task_str
 {
 }
 
+//XXX: debug only I hope.
+#define O_FORCE 1
+extern int needs_TLS_update(int force_presents, struct task_struct *task);
+extern int load_TLS(int flags, struct task_struct *to);
+
 void fork_handler(int sig)
 {
 	os_usr1_signal(1);
@@ -95,6 +100,15 @@ void fork_handler(int sig)
 
 /* Handle any immediate reschedules or signals */
 	interrupt_end();
+
+	{
+		int err = load_TLS(O_FORCE, current);
+		if (!err)
+			printk("load_TLS(O_FORCE) in fork_handler succeeded\n");
+		else if (err != -EINVAL)
+			printk("load_TLS(O_FORCE) in fork_handler failed, errno %d, not EINVAL\n", -err);
+	}
+
 	userspace(&current->thread.regs.regs);
 }
 
Index: linux-2.6.16/arch/um/sys-i386/tls.c
===================================================================
--- linux-2.6.16.orig/arch/um/sys-i386/tls.c	2006-03-23 20:31:44.000000000 -0500
+++ linux-2.6.16/arch/um/sys-i386/tls.c	2006-03-23 20:31:45.000000000 -0500
@@ -84,7 +84,7 @@ static inline void clear_user_desc(struc
 	info->seg_not_present = 1;
 }
 
-static int load_TLS(int flags, struct task_struct *to)
+int load_TLS(int flags, struct task_struct *to)
 {
 	int ret = 0;
 	int idx;
@@ -127,7 +127,7 @@ out:
  * present desc's; if force_presents = 0, only if they haven't been flushed.
  * XXX: remove the force_presents param if not needed.
  */
-static inline int needs_TLS_update(int force_presents, struct task_struct *task)
+int needs_TLS_update(int force_presents, struct task_struct *task)
 {
 	int ret = 0;
 	int i;
