Philippe Gerum wrote:
> On Thu, 2007-10-18 at 22:46 +0200, Jan Kiszka wrote:
>> Hi Philippe,
>>
>> what's the point about
>>
>>      if (xnsched_resched_p())
>>              xnpod_schedule();
>>
>> at the beginning of do_hisyscall_event() [1]? Could you provide a
>> comment for the background of this hunk? Or can we even remove it?
> 
> No, we can't. It's a Blackfin-specific thing in disguise actually, so we
> may make this code conditional through some arch-dependent wrapper
> though.
> http://www.rts.uni-hannover.de/xenomai/lxr/source/include/asm-blackfin/bits/pod.h#141
> 

Something like the attached patch?

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
---
 include/asm-blackfin/system.h |    7 +++++++
 include/asm-generic/system.h  |    4 ++++
 ksrc/nucleus/shadow.c         |    3 +--
 3 files changed, 12 insertions(+), 2 deletions(-)

Index: xenomai/include/asm-blackfin/system.h
===================================================================
--- xenomai.orig/include/asm-blackfin/system.h
+++ xenomai/include/asm-blackfin/system.h
@@ -95,6 +95,13 @@ static inline void xnarch_free_host_mem 
     kfree(chunk);
 }
 
+static inline void xnarch_hisyscall_entry(void)
+{
+	if (xnsched_resched_p())
+		xnpod_schedule();
+}
+#define xnarch_hisyscall_entry	xnarch_hisyscall_entry
+
 #ifdef __cplusplus
 }
 #endif
Index: xenomai/include/asm-generic/system.h
===================================================================
--- xenomai.orig/include/asm-generic/system.h
+++ xenomai/include/asm-generic/system.h
@@ -410,6 +410,10 @@ static inline int xnarch_remap_io_page_r
     return wrap_remap_io_page_range(vma,from,to,size,prot);
 }
 
+#ifndef xnarch_hisyscall_entry
+static inline void xnarch_hisyscall_entry(void)	{ }
+#endif
+
 #ifdef __cplusplus
 }
 #endif
Index: xenomai/ksrc/nucleus/shadow.c
===================================================================
--- xenomai.orig/ksrc/nucleus/shadow.c
+++ xenomai/ksrc/nucleus/shadow.c
@@ -1878,8 +1878,7 @@ static inline int do_hisyscall_event(uns
 	if (!xnpod_active_p())
 		goto no_skin;
 
-	if (xnsched_resched_p())
-		xnpod_schedule();
+	xnarch_hisyscall_entry();
 
 	p = current;
 	thread = xnshadow_thread(p);
_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to